LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1387|回复: 7

如何定位数组越界的地方?

[复制链接]
发表于 2008-10-26 03:09:52 | 显示全部楼层 |阅读模式
已知有一个数组int g_arr[100];在程序运行时访问越界,而这个数组被大量引用,
请添加和修改适当的代码定位出访越界的地方.

    有题大家有思路么?


stack分布:

stack bottom(high addess)
    |
  \|/
--------------
main的返回地址
--------------
saved %ebp
--------------
g_arr[99]
--------------
...
--------------
g_arr[0]
...
--------------


可能有错误,请高手指针! 非常感谢!!
 楼主| 发表于 2008-10-27 16:16:32 | 显示全部楼层
linuxsir的人都跑哪去了? 哈哈~
回复 支持 反对

使用道具 举报

发表于 2008-10-28 16:05:14 | 显示全部楼层
c? c++?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 18:33:31 | 显示全部楼层
whatever
回复 支持 反对

使用道具 举报

发表于 2008-10-29 14:23:02 | 显示全部楼层
我觉得c++的话你大可以写一个类重载[]操作符,在里面做点监测工作,然后把int g_arr[100]的类型改成新类。
c的话还不知道咋整
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-6 14:53:57 | 显示全部楼层
哦  是的~

重载
回复 支持 反对

使用道具 举报

发表于 2008-11-6 21:42:40 | 显示全部楼层
可否这样?
在g_arr定义的上面定义一个数据区,每次检查这个数据区,如果数组越界了,那么可以通过检查该数据区的值来操作越界的值。
(前提是这两个数据都是在栈中分配的啊!)
回复 支持 反对

使用道具 举报

发表于 2008-11-6 21:43:26 | 显示全部楼层
Post by x11;1901011
我觉得c++的话你大可以写一个类重载[]操作符,在里面做点监测工作,然后把int g_arr[100]的类型改成新类。
c的话还不知道咋整
X11的想法很好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表