我有一个结构如下:
struct octNode{
octNode* parent;
octNode* child[8];
std::vector<int> pointIndex;
//constructor of the struct
octNode()
{
memset(parent,0,sizeof(parent));
memset(child,0,sizeof(child));
}
};
但这会引发运行时错误:0xC0000005:访问冲突写入位置 0xcdcdcdcd。 Octree_octnode_0113.exe 中 0x771115de 的未处理异常:0xC0000005:访问冲突写入位置 0xcdcdcdcd。
访问冲突发生在创建空 vector 时。有没有一种方法可以在构造函数中初始化 vector ,从而不会发生错误?
最佳答案
在下面
memset(parent,0,sizeof(parent));
您正在将未初始化的指针传递给 memset()
。你是不是想说:
memset(&parent, 0, sizeof(parent));
或者,很简单
parent = NULL; // or nullptr
?
关于c++ - 将 vector 初始化添加到结构构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505294/