首页
社区
课程
招聘
[求助]数组越界问题
发表于: 2016-10-10 22:48 3454

[求助]数组越界问题

2016-10-10 22:48
3454
再网上看了很多DEMO,就是想做一个DUMP(就是程序崩溃了调用指定函数)

网上大多是用SetUnhandledExceptionFilter 这个函数,

但是我试了下,数组越界访问是不会调用的,求大神指教。

#include   <windows.h>   

long   __stdcall   callback(_EXCEPTION_POINTERS*   excp)
{
        MessageBox(0, L"Error", L"error", MB_OK);
        printf("Error   address   %x/n", excp->ExceptionRecord->ExceptionAddress);
        printf("CPU   register:/n");
        printf("eax   %x   ebx   %x   ecx   %x   edx   %x/n", excp->ContextRecord->Eax,
                excp->ContextRecord->Ebx, excp->ContextRecord->Ecx,
                excp->ContextRecord->Edx);
        return   EXCEPTION_EXECUTE_HANDLER;
}

int   main(int   argc, char*   argv[])
{
        SetUnhandledExceptionFilter(callback);
        int s[10];
        for (int i = 0; i < 20; i++)
        {
                s[i] = i;
        }
        return   0;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 4938
活跃值: (977)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
2
应该会弹Error的才对,你用调试器看看执行 return   0;后esp堆栈返回到哪里去了
2016-10-10 23:25
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
或许是for循环被优化掉了吧
我是觉得C捕获数组越界异常是很难的
毕竟允许越界
2016-10-11 07:24
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
调试的时候线程卡死在出错那个地方了。
2016-10-11 08:10
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有什么好的办法吗?
2016-10-11 08:11
0
雪    币: 4938
活跃值: (977)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
6
我VC6测试过是可以弹框的,不知道你线程卡死是什么情况,也不知道具体是编译什么代码出来,
你试试把for循环独立到到一个函数里面,数组越界,堆栈的地址被覆盖
一旦函数体ret 应该是会有异常出现的
2016-10-11 09:37
0
雪    币: 4938
活跃值: (977)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
7
对了单纯数组越界是不会有异常的 毕竟允许更改,只是越界之后可能会导致运行奔溃
2016-10-11 09:40
0
雪    币: 1267
活跃值: (1053)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
不会崩溃的话,也可能是优化掉了

你把main时面for拷贝到外面单独写一个函数或加句printf数组试试看
2016-10-11 10:45
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
C++的话stl容器可以在debug模式下捕获越界
或者自己实现一个数组检测越界
要用原生数组的话,换个语言吧
2016-10-11 18:06
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
tcc 有边界检查功能
2016-10-12 00:37
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
崩溃直接卡死不动了
2016-10-12 15:24
0
游客
登录 | 注册 方可回帖
返回
//