2010-06-09 19 views
1

我目前有一個奇怪的問題與程序segfaulting,但我不能夠發現錯誤。我認爲這個問題歸結爲這個問題。C++:複製到解除引用的指針

struct S {int a; vector<sometype> b;} 
S s1; 
// fill stuff into a and b 
S* s2 = new S(); 
*s2 = s1; 

難道是最終的複製在某些方面是非法的嗎?我現在很困惑... 謝謝

+1

你能解釋一下你在做什麼? – ckv 2010-06-09 09:12:11

+0

是丹尼爾,我不得不重寫一些不適當的設計庫:( – bbb 2010-06-09 09:15:41

+0

對不起,我刪除了評論,但我的意思是代碼很醜,但是不完整。 – 2010-06-09 09:16:30

回答

2

如果sometype在其用戶定義的複製構造函數和/或賦值運算符中有一個錯誤,您將會得到此行爲。您提供的代碼是完全合法的。

+0

實際上某些類型是一個shared_ptr,帶有正確的copyctr和assop – bbb 2010-06-09 09:14:56

+1

@bbb然後bu g可能在共享指針指向的類中 - 可能在其析構函數中。您需要發佈一個說明問題的完整示例。 – 2010-06-09 09:20:08

+0

thx爲您的迴應。我能夠切換到boost :: shared_ptr,它似乎使問題消失(之前使用自定義shptr-impl)。 – bbb 2010-06-09 12:52:46

0

對不起,代碼看起來對我來說很好,除非某些邪惡隱藏在'sometype'下