#include <unordered_set>
class C {
public:
std::unordered_set<int> us;
};
int main() {
C* c;
c->us.insert(2); // Segmentation Fault
}
我做错了什么?
答案 0 :(得分:4)
由于尚未指定指针,因此出现分段错误:
C* c = new C; // <<== Add this
c->us.insert(2);
delete c; // <<== Free the memory
与声明为对象的对象不同,而不是指针(例如C c;
)指针需要初始化:您应该为它们分配现有对象的地址,或者使用运算符{{为新对象分配内存1}}。取消引用未初始化的指针被认为是未定义的行为,通常会导致分段错误。