zoukankan      html  css  js  c++  java
  • 关于几种典型内存错误的问题及防护手段

    最近了解到关于检测内存错误的利器:purify、Boundschecker、Valgrind。有种相见恨晚的感觉,于是就顺便总结下最近遇到的几类内存错误问题。

    1、上层模块的程序员对下层模块的内存使用生命周期不清晰,导致野指针的出现。

          为了减少数据拷贝,有些底层模块设计一些接口的时候需要上层申请内存传入。上层模块的程序员对这些接口的重视不足,不清楚内存的生命周期,以为调用完该接口以后就可以释放。

          这个时候刚刚传入给底层模块的指针就变成了野指针。底层模块对内存的后续读写都是非法的。

         示例

         下层模块B:moduleB_packet(void *p)

         上层模块A:moduleA_packet(void *p) {

                                  pdata = malloc(1024);

                                  moduleB_packet(pdata); // 模块B内部没有做数据拷贝

                                  free(pdata); // 模块B还在访问 pdata;

                              }

    2、

  • 相关阅读:
    使用KNN算法手写体识别
    os内置模块
    python步长为负时的情况
    qplot()函数的详细用法
    python文件I/O
    python中 @property
    python中定制类
    python中多重继承与获取对象
    python继承,判断类型,多态
    python中访问限制
  • 原文地址:https://www.cnblogs.com/mic-chen/p/11295214.html
Copyright © 2011-2022 走看看