2010-06-09 61 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'下