【BUG定位】踩内存

看了网上写的一些资料和博客,学习一下踩内存。

一. 踩内存基本场景

      踩内存,就是访问了本不应该预期内的内存,所以出错了。

 场景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的内存。访问了不合法的内存。
 

猜你喜欢

转载自www.cnblogs.com/coreLeo/p/11961309.html