C ++使用basic_string中止:: _ M_Construct null无效

时间:2018-01-23 13:10:39

标签: c++ string null-string

有一些问题有相同的错误,但没有人符合我的情况。

我有两个类:Loader和Processor。加载器加载字符串向量。处理器在构造函数中调用要加载的Loader方法,然后为每个字符串调用其方法processString。这是代码:

class Loader
{   
public:
    Loader() {}
    void loadAllId() { loaded_ids_.push_back("a"); }    
    vector<string> loaded_ids_;    
};

class Processor 
{
public:
    Processor() {
        loader_ = new Loader();
        loader_->loadAllId();
        vector<string> loaded = loader_->loaded_ids_;

        // Here the loaded vector contains the string

        for (uint i=0;i<loaded.size();i++)
            processString(loaded[i]);
    }

    void processString(string s) { cout << s << endl; }
private:
    Loader* loader_;
};

int main(int argc, char *argv[])
{
    Processor* proc = new Processor();
}

在创建“loaded”和调用processStrings的for循环之间,向量包含正确的字符串。这就是调试显示的内容。

第一次调用processString方法时崩溃了。它甚至没有运行该方法的第一行。

我试过了:

  • 使用字符串而不是字符串向量。

  • 调用Loader构造函数,loadAllId和processString 在我创建处理器的主函数外部的方法。

  • 直接使用loader ids vector而不复制它 (加载)。

所有这些更改都在processString调用时给出了同样的错误。

0 个答案:

没有答案