我是靠谱客的博主 冷傲萝莉,最近开发中收集的这篇文章主要介绍C++读取XXX位置时发生访问冲突的一种情况,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天在写到如下代码时出现了访问冲突(执行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的大小,此时就会出现访问冲突的错误。
所以在涉及到动态分配内存时,vector也应使用指针,即将上述代码修改为:

struct TreeTag
{
int val;
vector<Node>* children;
};
Node newNode(int val)
{
Node n = (Node)malloc(sizeof(struct TreeTag));
n->val = val;
n->children = new vector<Node>();
return n;
}

最后

以上就是冷傲萝莉为你收集整理的C++读取XXX位置时发生访问冲突的一种情况的全部内容,希望文章能够帮你解决C++读取XXX位置时发生访问冲突的一种情况所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部