踩内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了踩内存相关的知识,希望对你有一定的参考价值。
踩内存总会听到这个名词,但是一直都不明白其中的含义。今天来学习一下踩内存。
踩内存,总的来说,是访问了不应该访问的内存地址。尤其在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的内存。访问了不合法的内存。
- 其它
本次学习,内容较少,留待以后继续充实。
以上是关于踩内存的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段