踩内存

https://blog.51cto.com/qiaopeng688/2091842

踩内存

踩内存,总的来说,是访问了不应该访问的内存地址。尤其在C指针中。可以访问不合法的内存。

1、访问越界数组

int a[10];
int *p = a;
int c = p[11];
//这时变量指针p指向的是一个非法内存。已经越界了。这是越界数组访问导致的踩内存。

2、访问已经被free释放掉的内存

char *a = (char *)malloc(sizeof(char) * 10);//申请内存
char *p = a;
char c ;
free(a);
c = p[1];
//这时,指针访问已经被释放的内存块a。这是访问已经被free掉的内存导致的踩内存。

3、栈内存访问越界

int b = 1;
int a[20] = {0};
int c ;
int *p = a;
c = p[20];
//首先变量b入栈,然后申请数组a[20]入栈,p[20]已经超出了数组的合法范围,
//这时访问的是栈中变量b的内存。访问了不合法的内存。

如果是内存泄露,数组越界,访问未初始化的内存,请使用valgrind

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值