Windows SEH Exception 0xc0000005 0xc0000094 0xc0000374

这篇博客探讨了Windows操作系统中三种常见的异常错误:0xc0000005(空指针引用)、0xc0000094(除0操作)和0xc0000374(堆损坏)。作者指出,空指针可能导致内存被其他数据覆盖,除0操作会引发运行时错误,而重复删除对象则会导致堆损坏。文章旨在提高读者对这些常见异常的理解和避免方式。
摘要由CSDN通过智能技术生成

1、空指针问题

	try
	{
		char* p = new char[256];
		strcpy(p, "hello");
		int size = strlen(p);
		printf("strlen = %d\n", size);
		delete[] p;
		p = nullptr;
		strcpy(p, "world");
		size = strlen(p);
		printf("strlen = %d\n", size);
	}
	catch (const std::exception& e)
	{
		printf("err:%s\n", e.what());
	}
	//catch (...)
	//{
	//	DWORD errcode = GetLastError();
	//	printf("Unknown err, code = %d\n", errcode);
	//}

上面代码中如果去掉p=nullptr那么p就变为了野指针,程序可能不会出错,但是会产生巨大的隐藏风险:p指针已经被delete,所指向的内存已被操作系统回收,strcpy拷贝的数据随时可能被后续的其他数据所覆盖;

e6715a3253bfab127e0994e33ada54fb12b.jpg

2、除0操作产生0xc0000094异常代码:被除数不能为零


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值