内存越界排查方法

只想说此方法简单粗暴有疗效!


#ifdef _DEBUG
#  define _CRTDBG_MAP_ALLOC
#  define _CRTDBG_MAP_ALLOC_NEW
#  include <crtdbg.h>
#  include <assert.h>
#else


_ASSERTE( _CrtCheckMemory( ) );

char b[10];

char*p = b;

memset(p, 1, 11);

_ASSERTE( _CrtCheckMemory( ) );


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ARM架构中,可以通过一些方法查看内存越界内存越界指的是程序访问了其分配以外的内存区域,可能会导致程序崩溃或产生不可预测的结果。 一种查看内存越界方法是通过使用调试器,如GDB(GNU调试器)。GDB是一个功能强大的工具,可以用于调试C/C++程序,在ARM平台上也可使用。 首先,需要在编译开启调试信息,以便能够从调试器中获取更多的信息。在编译使用"-g"选项,例如:"gcc -g test.c -o test"。 然后,可以使用GDB来运行程序。在命令行中输入"gdb test"(其中“test”是可执行文件的名字),GDB将会启动并显示一个提示符。 接下来,可以使用GDB的一些命令来查看内存越界。例如,使用"break"命令在程序的某个关键位置设置一个断点,让程序在该处停下来。 当程序执行到断点处停下来后,可以使用"print"命令来查看特定变量的值,例如:"print var"(其中“var”是要查看的变量名)。 此外,还可以使用"watch"命令来监视特定变量或内存地址的变化情况,例如:"watch var"(其中“var”是要监视的变量名)。 如果程序在访问越界内存崩溃了,GDB将会打印一些有用的信息,如访问越界内存地址,以及相关的堆栈追踪信息。 总之,通过使用GDB调试器,可以方便地查看内存越界问题,并定位到具体的代码位置,从而进行修复。同,对于遇到的一些特殊情况,还可以使用GDB的其他命令和功能来进一步分析和排除问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值