为结构

时间:2017-06-26 01:45:28

标签: c++

我有以下结构:

struct node{
  char name;
  vector<node*> children;

  void addChild(char name){
    node *newChild = (node*)malloc(sizeof(node));
    newChild->name = name;
    children.push_back(newChild);
  }
};

上面的代码编译但是每当为使用addChild创建的任何节点调用addChild时,都会使用std :: bad_alloc提示进行崩溃。

在我看来,我应该以某种方式为矢量分配内存,但我不确定我将如何去做。

我是一个“乞丐”,对内存分配知之甚少,所以任何帮助都会受到赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:5)

不要在C ++中使用mallocfree。特别是对于需要调用其构造函数的对象,因为malloc 调用构造函数。

在您的情况下,这意味着在您使用向量时,将不会调用std::vector构造函数,并且您将具有未定义的行为

改为使用newdelete

Any good beginners book应该告诉你这个。