2013-07-18 38 views

回答

4

你得到一个分割的错,因为指针尚未分配:

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

不像声明为对象的对象,而不是指针(如C c;)指针需要初始化:您应该为它们分配一个地址使用运算符new为新对象分配内存。解引用未初始化的指针被认为是未定义的行为,通常导致分段错误。

+0

甚至更​​好,根本不要制造“新”C,因为你不需要。只要做'C c; c.us.insert(2);' – IdeaHat

+0

问题中的代码不是我正在编写的实际代码。这是我的问题最简单的形式,仍然产生了分段错误。在我的实际代码中,“c”(实际上并不是“c”)需要是一个指针。 – anthropomorphic