【发布时间】:2014-08-12 10:05:04
【问题描述】:
有线分段错误让我困惑了一段时间,我定义了一个结构如下:
struct Foo
{
Foo()
{
pc = (char *)malloc(10 * sizeof(char));
memset(pc, 0, 10 * sizeof(char));
}
~Foo()
{
free(pc);
}
Foo(const Foo& f)
{
if(this == &f) return;
strncpy(pc, f.pc, 10);
}
Foo& operator=(const Foo& f)
{
if(this == &f) return *this;
strncpy(pc, f.pc, 10);
return *this;
}
char * pc;
};
然后我将实例放入向量中:
vector<Foo> vf;
Foo f;
strcpy(f.pc, "hello");
vf.push_back(f);
但是运行到 push_back() 行时发生分段错误,我就是想不通。
【问题讨论】:
-
在复制构造函数中使用
pcuninitialized -
malloc…memset…strncpy… 为什么?!? -
@Matt McNabb 太棒了,非常感谢!
标签: c++