c++ - 将 vector 初始化添加到结构构造函数

标签 c++ struct

我有一个结构如下:

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/

相关文章:

arrays - 我们如何在 golang 的结构中初始化结构类型的数组(存储 json 输出)

c - 动态扩展结构体数组 C

c++ - Qt - 跟踪 QAbstractAnimation 运动

c++ - 二维 unordered_map

c++ - xxxxx 处的未处理异常无法写入位置。它不会在 getline 之外执行......在 visual studio 2010 中

c - 在 C 中向结构体添加变量

c - 为什么我不能通过它的指针访问这个结构?

c++ - 特征向量对数错误不完整类型的使用无效

c++ - 在 Ubuntu 中获取 CPU 时间?

c - 用函数修改 C 结构的子结构(用于 trie 的应用)