分段错误,指向包含unordered_set的对象

时间:2013-07-18 17:45:43

标签: c++ c++11 segmentation-fault unordered-set

#include <unordered_set>

class C {
public:
    std::unordered_set<int> us;
};

int main() {
    C* c;
    c->us.insert(2); // Segmentation Fault
}

我做错了什么?

1 个答案:

答案 0 :(得分:4)

由于尚未指定指针,因此出现分段错误:

C* c = new C; // <<== Add this
c->us.insert(2);
delete c;    // <<== Free the memory

与声明为对象的对象不同,而不是指针(例如C c;)指针需要初始化:您应该为它们分配现有对象的地址,或者使用运算符{{为新对象分配内存1}}。取消引用未初始化的指针被认为是未定义的行为,通常会导致分段错误。