异常:0xC0000005: 读取位置 0x00617568 时发生访问冲突。

0xC0000005: 读取位置 0x00617568 时发生访问冲突。
这个令一个像我这种正在学习的小菜鸟非常崩溃的异常。

对于这个异常,有个大佬总结了一下
0xC0000005可能出现的原因:

  • 是否访问的内存地址为空指针
  • 是否使用free或delete释放了内存后,没有将指针设置为NULL。导致产生“野指针”
  • 是否出现访问数组越界,malloc一个100内存的空间用于读入文件,当文件的大小超过100时,并且程序中再使用100之后的内存时,就会产生“0xC0000005: 读取位置 xxx时发生访问冲突”这样的错误。
  • 内存分配虽然成功,但是尚未初始化就引用它。
  • 然而这些都排查过了,依然没有任何头绪

我似懂非懂的看了看,与我这个一一比对,好像都没有奥。

我这是学习的初级阶段,不会涉及那么复杂的原因。

// vector存放自定义数据类型
class Person
{
public:
	Person(string name, int age) {
		this->m_Name = name;
		this->m_Age = age;
	}

	string m_Name;
	int m_Age;
};

// vector存放自定义数据类型
void test02() {

	vector<Person> v;

	string name = "xiaohua";

	Person p1(name, 10);
	Person p2(name, 20);
	Person p3(name, 30);

	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);


	for (vector<Person>::const_iterator it = v.begin(); it != v.end(); it++) {
		cout << "Name: " << (*it).m_Name << "  Age:" << (*it).m_Age << endl;
	}

}


int main()
{
	test02();

	system("pause");
	return 0;
}

就这么简简单单的几行代码,咋会报这种级别的错呢?

我尝试更改Person类的属性,结果就不会报错,难道是vector容器存的自定义类型里面内含的类型不能有string吗?

这样岂不是太不方便了!

我想到了我在这个目录下的其他cpp文件里面也写了Person类,他也就是这么两个属性,并且也创建了几个对象,而且命名也就是p1、p2这么命名的。

于是我把这个Person对象改了个名字,就好了。

所以,那些看起来你完全不知道、不理解的错。可能你不是犯得那个错,而是其他的某些地方不规范。

还是不清楚具体是哪一点出错了,以后整明白了再写。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值