踩内存
总会听到这个名词, 但是一直都不明白其中的含义今天来学习一下踩内存
踩内存, 总的来说, 是访问了不应该访问的内存地址尤其在 C 指针中可以访问不合法的内存
访问越界数组
- int a[10];
- int *p = a;
- int c = p[11];
- // 这时变量指针 p 指向的是一个非法内存已经越界了这是越界数组访问导致的踩内存
访问已经被 free 释放掉的内存
- char *a = (char *)malloc(sizeof(char) * 10);// 申请内存
- char *p = a;
- char c ;
- free(a);
- c = p[1];
- // 这时, 指针访问已经被释放的内存块 a 这是访问已经被 free 掉的内存导致的踩内存
栈内存访问越界
- int b = 1;
- int a[20] = {0};
- int c ;
- int *p = a;
- c = p[20];
- // 首先变量 b 入栈, 然后申请数组 a[20] 入栈, p[20] 已经超出了数组的合法范围,
- // 这时访问的是栈中变量 b 的内存访问了不合法的内存
来源: http://www.bubuko.com/infodetail-2541001.html