怎样判断内存越界呢?比如,用MessageBox输出进程的地址范围,和指针的地址比较,用来判断是否越界。这要如何实现呢?
解决方案 »
- socket中,多调用几次出现死锁现象!!!!急!!!
- 关于CHtmlView和CEditView
- CMainFrame的客户区绘图能不能不让视图客户区挡住?
- 请问如何在对话框中任意位置加入工具条?
- 关于CListCtrl InsertItem的问题
- 关于 ON_UPDATA_COMMAND_UI
- 如何加入一个dll动态链接库?紧急求助!
- How to setup a proxy for IE dynamically?
- 如何得到文档在系统中关联的图标?就像资源管理器那样!
- 请教,VS2008 sp1 用MFC生成程序
- 为什么我的类在执行线程时总是会有0xC0000005Access Violation错误?
- Windows Object是怎么销毁的?
//Exception filter:
int ExcptFilter(int ExcptCode){
return ( EXCEPTION_ARRAY_BOUNDS_EXCEEDED == ExcptCode
||STATUS_ACCESS_VIOLATION == ExcptCode);
}
__try{
....//你的代码
}
__except( ExcptFilter(GetExceptionCode() ) {
PEXCEPTION_RECORD pER= GetExceptionInformation()->ExceptionRecord;
TCHAR szMsg[1024];
_stprintf(szMsg, TEXT("进程的地址:0x%08X处发生访问越界错误.\r\n"),
pER->ExceptionAddress);
if (pER->ExceptionCode == STATUS_ACCESS_VIOLATION)
_stprintf(_tcschr(szMsg, TEXT('\0')),
TEXT("这个错误在试图对地址0x08X进行%s的时候发生。",
pER->ExceptionInformation[1],
(pER->ExceptionInformation[0]?TEXT("写"):TEXT("读"))
);
} MessageBox(NULL, szMsg, "内存错误", MB_OK|MB_ICONSTOP);
}