内存访问越界

TRACEBACK:http://blog.vckbase.com/arong/archive/2009/12/30/40598.html

1.内存越界分配的原理:何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明申请的是100字节的空间,但是你由于某种原因写入了120字节,这就是内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。

如下所示的代码:

 

输出:

 

a=1,c=2

a=0,c=0

2.增加变量是程序崩溃。

 

 

结果:段错误。原因是:b访问越界了8个字节位置处的4个字节。如果没有evil,那么越界破坏了e变量,不会导致程序崩溃。但是加上evil之后,破坏的变量可能就是d了,由于指针被破坏后,一旦访问就是内存访问违例,导致程序崩溃。

 

 

 

在Ubuntu系统中,当C/C++程序因内存访问越界等错误导致段错误时,可以通过配置和生成coredump文件来帮助调试。首先,你需要确认当前系统中apport.service服务的状态。如果该服务处于活动状态,它可能会自动处理崩溃报告,从而阻止coredump文件的生成。关闭apport.service服务可以通过运行以下命令实现:``sudo service apport stop``。关闭该服务后,若程序崩溃,系统将按照当前的配置生成coredump文件,默认名称为`core`。然而,你还可以自定义coredump文件的生成路径和大小限制。通过编辑`/etc/security/limits.conf`文件,可以设置用户级别的coredump文件生成规则。例如,添加如下行可以指定生成文件的大小和位置:``username hard core unlimited``。此外,为了确保coredump文件包含了足够的调试信息,需要在编译程序时加入`-g`选项,这样编译出的程序中将包含调试符号。在生成coredump文件后,可以使用gdb等调试器加载这个文件,分析程序崩溃时的状态。通过这些步骤,你将能够详细了解程序崩溃时的内存状况和运行状态,进而定位和解决内存访问越界的问题。有关程序崩溃和coredump文件生成的更详细信息和操作指南,可以参考《Ubuntu Linux 下程序崩溃生成 coredump 文件的方法和原理》一文。该资源为你提供了深入理解coredump机制的方法,以及如何在Ubuntu系统中正确配置和使用coredump文件进行调试。 参考资源链接:[Ubuntu Linux 下程序崩溃生成 coredump 文件的方法和原理](https://wenku.youkuaiyun.com/doc/7fc4mwvnvb?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值