vect<myStruct*> 变量;访问违规读取位置

vect<myStruct*> var; access violation reading location

我定义了以下结构

typedef struct NodeMulti{
    int key;
    vector<NodeMulti*> child;
};

在函数中假设我有:

NodeMulti* newNode = (NodeMulti*)malloc(sizeof(NodeMulti));
NodeMulti* anotherNode = (NodeMulti*)malloc(sizeof(NodeMulti));
newNode->child.push_back(anotherNode);

它不起作用,关于如何修复它有什么建议吗? 如果我尝试更改键值,它会起作用;例如: 'newNode->key =...` 工作正常 谢谢!

在 C++ 中使用 new,而不是 malloc

malloc只分配内存,不调用构造函数。例如。您的 vector 未初始化,因此尝试访问它(例如 push_back)会调用未定义的行为。

new 都分配内存并调用构造函数,因此您的 vector 将使用其默认构造函数进行初始化,这会创建一个空的 vector.

此外,在 C++ 中,您可以像这样声明一个 struct

struct NodeMulti { ... };

即不需要 typedef。同样在您的代码中,您甚至没有在 typedef 声明中分配名称,因此 it has no effect.