STL Container作为私人会员。分段故障

时间:2010-11-25 16:35:35

标签: c++ map stl segmentation-fault

我对STL容器有一个奇怪的问题。

我有一个私人会员std::map<string, string> _environment。为什么当我在类构造函数(或任何地方)中调用_environment["name"]="john"时,我得到Segmentation fault

它应该是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";

1 个答案:

答案 0 :(得分:0)

分段错误没有理由。为简化插入,我建议使用boost :: assign库,如下所示:

Shell::Shell() {
    using namespace boost::assign;
    insert( _environment )( "shell", "myshell" );    
    ...
}

这更优雅,更有效。