【发布时间】:2009-01-31 15:36:34
【问题描述】:
昨天我读了一个同事的一些代码,发现了这个:
class a_class
{
public:
a_class() {...}
int some_method(int some_param) {...}
int value_1;
int value_2;
float value_3;
std::vector<some_other_class*> even_more_values;
/* and so on */
}
a_class a_instances[10];
void some_function()
{
do_stuff();
do_more_stuff();
memset(a_instances, 0, 10 * sizeof(a_class)); // <===== WTF?
}
这合法吗(WTF 行,而不是公共属性)?对我来说,它闻起来真的,真的很糟糕......
该代码在使用 VC8 编译时运行良好,但在调用 a_instances[0].event_more_values.push_back(whatever) 时使用 VC9 编译时会引发“意外异常”,但在访问任何其他成员时。有什么见解吗?
编辑:将 memset 从 memset(&a_instances... 更改为 memset(a_instances...。感谢您指出爱德华。
EDIT2:删除了 ctor 的返回类型。谢谢。
结论:谢谢各位,你证实了我的怀疑。
【问题讨论】:
标签: c++