STL 容器作为私有成员。分段错误
我在使用 STL 容器时遇到了一个奇怪的问题。
我有一个带有私有成员 std::map
。为什么当我在类构造函数(或任何地方)中调用 _environment["name"]="john"
时,会出现分段错误
?
它应该是 STL 容器最常见的用途,不是吗?
谢谢!
编辑(更多代码):
在 shell.h 中:
#include <string>
#include <map>
using namespace std;
class Shell {
public:
Shell();
Shell(const Shell& orig){};
virtual ~Shell(){};
private:
...
...
std::map<string, string> _environment;
};
在 shell.cpp 中:
Shell::Shell() {
_environment["shell"] = "myshell";
...
}
分段错误发生在行 _environment["shell"] = "myshell" 中;
I'm having a strange problem with a STL Container.
I have a class with a private member std::map<string, string> _environment
. Why when I call _environment["name"]="john"
in the class constructor (or anywhere), I get a Segmentation fault
?
It should be the most common use of a STL container, shouldn't it?
Thanks!
Edit (more code):
In shell.h:
#include <string>
#include <map>
using namespace std;
class Shell {
public:
Shell();
Shell(const Shell& orig){};
virtual ~Shell(){};
private:
...
...
std::map<string, string> _environment;
};
In shell.cpp:
Shell::Shell() {
_environment["shell"] = "myshell";
...
}
The segmentation fault occurs in the line _environment["shell"] = "myshell";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有理由出现分段错误。为了简化插入,我建议使用 boost::assign 库,如下所示:
这更优雅、更有效。
There is no reason for Segmentation fault. And for simplify inserting I recommend to use boost::assign library, like this:
This is more elegantly and more effectively.