[新人,多谢大家]怎么解决0xC0000005错误
[新人求助,谢谢大家]如何解决0xC0000005异常?
使用虚拟分配以获得512MB虚拟内存,测试是否可以向虚拟内存写入0
代码段如下:
因为不能向虚拟内存写入0,所以应该是printf("Could not zero memory.\n");
可是调试的时候出现“未经处理的异常0xC0000005: 写入位置 0x013C0000 时发生访问冲突”
C++代码也是一样,可以用try...catch解决吗?catch什么异常呢?
------解决思路----------------------
MEM_RESERVE申请后没有提交,应该加上mem_commit
------解决思路----------------------
推荐使用api判断,当然非要捕获异常也是可以的。
使用虚拟分配以获得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;
}
------解决思路----------------------
MEM_RESERVE申请后没有提交,应该加上mem_commit
------解决思路----------------------
推荐使用api判断,当然非要捕获异常也是可以的。
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;
}