[新人求助,谢谢大家]如何解决0xC0000005异常?

昔往矣 2015-05-04 04:59:54
使用虚拟分配以获得512MB虚拟内存,测试是否可以向虚拟内存写入0

代码段如下:

printf("Allocated 512M Virtual Memory Space.\n"); //使用虚拟分配以获得虚拟512MB块
LPVOID pBlock3 = VirtualAlloc(
NULL, // 不指定起始地址
1 << 29, // 要求512MB
MEM_RESERVE, // 不调配物理存储
PAGE_READWRITE); // 对此的读写操作

/*尝试向刚申请的内存空间内写入0*/
if (ZeroMemory(pBlock3, 1 << 29)){
printf("Memory zeroed.\n");
}
else{
printf("Could not zero memory.\n");
}

因为不能向虚拟内存写入0,所以应该是printf("Could not zero memory.\n");
可是调试的时候出现“未经处理的异常0xC0000005: 写入位置 0x013C0000 时发生访问冲突”

cout << "Allocated 512M Virtual Memory Space." << endl; //使用虚拟分配以获得虚拟512MB块
LPVOID pBlock3 = VirtualAlloc(
NULL, // 不指定起始地址
1 << 29, // 要求512MB
MEM_RESERVE, // 不调配物理存储
PAGE_READWRITE); // 对此的读写操作

/*尝试向刚申请的内存空间内写入0*/
if (SecureZeroMemory(pBlock3, 1 << 29)){
cout << "Memory zeroed." << endl;
}
else{
cout<<"Could not zero memory."<<endl;
}

C++代码也是一样,可以用try...catch解决吗?catch什么异常呢?

/*尝试向刚申请的内存空间内写入0*/
try{
SecureZeroMemory(pBlock2, 1 << 27);
cout << "Memory zeroed." << endl;
}
catch (){
cout << "Could not zero memory." << endl;
}
...全文
540 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathletboy 2015-05-04
  • 打赏
  • 举报
回复
推荐使用api判断,当然非要捕获异常也是可以的。
引用
IsBadWritePtr
	cout << "Allocated 512M Virtual Memory Space." << endl;                //使用虚拟分配以获得虚拟512MB块
	LPVOID pBlock3 = VirtualAlloc(
	                     NULL,                                                        // 不指定起始地址
	                     1 << 29,                                                    // 要求512MB
	                     MEM_RESERVE,                                                // 不调配物理存储
	                     PAGE_READWRITE);                                            // 对此的读写操作


	if (pBlock3 != NULL && !IsBadWritePtr(pBlock3, 1 << 29) && (SecureZeroMemory(pBlock3, 1 << 29)))
	{
		cout << "Memory zeroed." << endl;
	}
	else
	{
		cout << "Could not zero memory." << endl;
	}
fly_dragon_fly 2015-05-04
  • 打赏
  • 举报
回复
MEM_RESERVE申请后没有提交,应该加上mem_commit

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧