zoukankan      html  css  js  c++  java
  • 【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的内存。访问了不合法的内存。
     

  • 相关阅读:
    华为OD机试 :找终点
    华为OD机试 :磁盘容量排序
    剑指Offer-从上到下打印二叉树
    GO语言学习笔记3-int与byte类型转换
    剑指Offer-树的子结构
    LeetCode :21.合并两个有序链表
    LeetCode :206.反转链表
    剑指Offer-删除链表的结点
    剑指Offer-调整数组顺序使奇数位于偶数前面
    如何创建ts+react项目
  • 原文地址:https://www.cnblogs.com/coreLeo/p/11961309.html
Copyright © 2011-2022 走看看