我有以下结构:
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提示进行崩溃。
在我看来,我应该以某种方式为矢量分配内存,但我不确定我将如何去做。
我是一个“乞丐”,对内存分配知之甚少,所以任何帮助都会受到赞赏。
提前致谢。
答案 0 :(得分:5)
不要在C ++中使用malloc
和free
。特别是对于需要调用其构造函数的对象,因为malloc
不调用构造函数。
在您的情况下,这意味着在您使用向量时,将不会调用std::vector
构造函数,并且您将具有未定义的行为。
改为使用new
和delete
。
Any good beginners book应该告诉你这个。