C++读取XXX位置时发生访问冲突的一种情况

本文讨论了在C++编程中遇到的一个访问冲突问题,问题出现在尝试向已确定大小的vector添加元素时。原因是使用malloc分配空间只分配了vector本身的存储,而未预留push_back所需的空间。解决方法是使用指针和动态内存分配来处理vector。
摘要由CSDN通过智能技术生成

今天在写到如下代码时出现了访问冲突(执行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的大小,此时就会出现访问冲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值