2013-07-18 75 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