踩内存是什么意思啊_面试|搬了这么久的砖,居然还不知道什么叫“踩内存”...

踩内存是指访问了不应访问的内存地址,包括数组越界、use after free和随机踩等现象。数组越界可能导致栈溢出,use after free是指释放后的内存再次使用,而随机踩通常由于未初始化的指针或未知索引导致。为避免踩内存,应做边界检查、避免代码嵌套过深、减少局部变量,并及时置空已释放的资源。出现问题时,可通过gdb和valgrind等工具进行调试和排查。
摘要由CSDN通过智能技术生成

摘要:你是否在总是听到“内存越界”,“指针指向了非法地址”等常见问题呢?但是在面试过程中总有一些学术严谨(装13)的面试官给这一类问题取个名字-踩内存。如果你没听过,是不是就显得没品味(正常)。简而言之,踩内存就指访问了不应该访问的内存地址

e56c86edaa987319628c63e63204020a.png

关于踩内存

踩内存就是访问了不应该访问的内存,常见有几种:

1、越界踩;

越界踩的意思就是踩坏的内存就在你分配内存的旁边,也就是在界限附近,出现这种情况一般是由于申请的内存小了。举个例子:

char *p; p = malloc(5);strcpy(p, "hello");

strcpy拷贝了6个字节(字符串“hello”有6个字节,包括最后的‘0’),但是指针p指向所分配的内存只有5个字节,所以就越界了。

当然还有一种情况就是数组越界,这也是新手时常发生的,这也属于一种越界踩,除此之外,越界踩还有一种比较难发现的情况,就是栈溢出的情况,我们知道栈内存一般都是有固定大小的,如果一个函数里面变量过多大就会导致栈溢出,出现越界踩。举个例子:

int func(){

char

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值