今天在写到如下代码时出现了访问冲突(执行children.push_back()时出现错误):
struct TreeTag
{
int val;
vector<Node> children;
};
Node newNode(int val)
{
Node n = (Node)malloc(sizeof(struct TreeTag));
n->val = val;
n->children = vector<Node>();
return n;
}
后来查阅了相关资料,发现是因为在利用malloc申请空间时,由于vector是确定了的(即children变量不是指针),所以在分配空间时,虽然给vector本身分配了空间,但是这个空间仅仅是存vector本身,所以在利用push_back方法向vector里面添加元素时,超过了本身分配给vector的大小,此时就会出现访问冲