`
Riddick
  • 浏览: 640866 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

《高质量C++/C 编程指南》之 free和delete把指针怎么啦?

阅读更多

别看freedelete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。

用调试器跟踪示例7-5,发现指针pfree以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的指针。

 

如果程序比较长,我们有时记不住p所指的内存是否已经被释放,在继续使用p之前,通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。

 

char *p = (char *) malloc(100);
strcpy(p, “hello”);
free(p);        // p 所指的内存被释放,但是p所指的地址仍然不变
…
if(p != NULL)   // 没有起到防错作用
{
    strcpy(p, “world”);  // 出错
分享到:
评论

相关推荐

    高质量C/C++编程指南(PDF)

    7.5 FREE 和DELETE 把指针怎么啦? 7.6 动态内存会被自动释放吗?. 7.7 杜绝“野指针”. 7.8 有了MALLOC/FREE 为什么还要NEW/DELETE ?. 7.9 内存耗尽怎么办?. 7.10 MALLOC/FREE 的使用要点 7.11 NEW/DELETE 的使用...

    林锐-高质量c/c++编程指南

    《林锐-高质量C/C++编程指南》不仅为C/C++开发者提供了一套全面而细致的编程规范,还深入讲解了许多核心概念和技术细节,对于提升编程水平和编写高质量的C/C++程序具有重要的指导意义。无论是初学者还是有一定经验的...

    高质量C++/C 编程指南

    《高质量C++/C 编程指南》是林锐博士所著的一本深入探讨C++/C编程规范和最佳实践的书籍,旨在帮助程序员提升代码质量和编程效率。本书全面覆盖了从文件结构、程序版式到命名规则、表达式、基本语句、内存管理等各个...

    高质量C++/C编程指南.pdf

    ### 高质量C++/C编程指南知识点梳理 #### 一、引言及背景 - **作者介绍**:林锐博士,资深软件工程师,具备丰富的软件开发与项目管理经验。 - **出版信息**:该书首次发布于2001年7月24日,版本为1.0。在此之前有...

    高质量C++/C编程指南 作者:林锐

    根据提供的文件信息,以下是对《高质量...以上是对《高质量C++/C编程指南》一书可能涉及知识点的梳理,由于文档内容存在扫描错误和不连贯的地方,部分知识点可能存在理解偏差,但基本涵盖了C++/C编程的核心概念和实践。

Global site tag (gtag.js) - Google Analytics