`
ychw365
  • 浏览: 55141 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

指针高级--<高质量编程>

阅读更多

 //  execise2.cpp : Defines the entry point for the console application.
 //
 
#include  " stdafx.h "
#include  < iostream >

#include <stdio.h>
#include <tchar.h>  


 using   namespace  std;
 // -----------------------------------------------
 void  GetMemory1( char   * p)
  {
    p  =  ( char   * )malloc( 100 );
}
 void  Test1( void )
  {
     char   * str  =  NULL;
    GetMemory1( str );
    strcpy(str,  " hello world " );
    printf(str);
}
 // -----------------------------------------------
 char   * GetMemory2( void )
  {  
     char  p[]  =   " hello world " ;
     return  p;
}
 void  Test2( void )
  {
     char   * str  =  NULL;
    str  =  GetMemory2(); 
    printf(str);
}
 // -----------------------------------------------
 void  GetMemory3( char   ** p,  int  num)
  {
     * p  =  ( char   * )malloc(num);
}
 void  Test3( void )
  {
     char   * str  =  NULL;
    GetMemory3( & str,  100 );
    strcpy(str,  " hello " ); 
    printf(str);   
}
 // -----------------------------------------------
 void  Test4( void )
  {
     char   * str  =  ( char   * ) malloc( 100 );
    strcpy(str,  " hello " );
    free(str);     
     if (str  !=  NULL)
      {
        strcpy(str,  " world " );
        printf(str);
    }
}
 // -----------------------------------------------
 main()
  {
     // -----------------------------------------------
     // 请问运行Test1函数会有什么样的结果?
     //
     // 答:程序崩溃。
     //
     // 因为GetMemory并不能传递动态内存,
     //
     // Test函数中的 str一直都是 NULL。
     //
     // strcpy(str, "hello world");将使程序崩溃。
     Test1();
     // -----------------------------------------------
     //     请问运行Test2函数会有什么样的结果?
     //
     // 答:可能是乱码。
     //
     // 因为GetMemory返回的是指向“栈内存”的指针,
     // 该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。
     Test2();
     // -----------------------------------------------
     //     请问运行Test3函数会有什么样的结果?
     //
     // 答:
     //
     // (1)能够输出hello
     //
     // (2)内存泄漏
     Test3();
     // -----------------------------------------------
     //     请问运行Test函数会有什么样的结果?
     //
     // 答:篡改动态内存区的内容,后果难以预料,非常危险。
     //
     // 因为free(str);之后,str成为野指针,
     //
     // if(str != NULL)语句不起作用。
     Test4();
     // -----------------------------------------------
 }

分享到:
评论

相关推荐

    高质量指南

    56&lt;br&gt;&lt;br&gt;第8章 C++函数的高级特性... 57&lt;br&gt;&lt;br&gt;8.1 函数重载的概念... 57&lt;br&gt;&lt;br&gt;8.2 成员函数的重载、覆盖与隐藏... 60&lt;br&gt;&lt;br&gt;8.3 参数的缺省值... 63&lt;br&gt;&lt;br&gt;8.4 运算符重载... 64&lt;br&gt;&lt;br&gt;8.5 函数内联... 65...

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

    ### 林锐-高质量C/C++编程指南 #### 概述 《林锐-高质量C/C++编程指南》是一份由林锐博士编撰的专业文档,旨在为C/C++开发者提供一套规范化的编程指导原则。这份文档对于希望提升编程技能、编写出高质量代码的C++...

    VC 高级编程--VC 高级编程

    了解如何正确地分配和释放内存,以及如何使用智能指针避免内存泄漏,都是VC高级编程中的重要内容。此外,了解堆栈与堆的区别,以及何时选择动态内存分配,也是必要的。 ### 3. 模板元编程 模板元编程是C++中的一种...

    C++高质量编程-指针操作

    但同时,不当的指针使用也可能引入错误和隐患,如空指针引用、悬挂指针、内存泄漏等,因此在编写高质量的C++代码时,应确保对指针操作有清晰的理解和严格的管理。通过深入学习和实践,可以更好地掌握这一关键工具,...

    电子-高质量C编程林锐.pdf

    ### 电子-高质量C编程林锐.pdf 知识点概览 #### 1. 文件概述与版本信息 - **文件名称**:“电子-高质量C编程林锐.pdf” - **作者**:林锐博士 - **文件状态**:正式文件 - **完成日期**:2001年7月24日 - **版本...

    林锐 - 高质量C++_C编程指南

    《林锐 - 高质量C++/C编程指南》是一本深入探讨C++和C语言编程实践的经典著作,旨在帮助程序员提升代码质量和编程效率。本书不仅涵盖了C++的基础语法和特性,还着重强调了良好的编程习惯和设计原则,是每一位C++/C...

    C语言高级教程-上海贝尔_C语言_编程规范c++_编程_

    《C语言高级教程-上海贝尔》是一本深入探讨C语言编程技术与规范的教程,特别强调了在实际开发中遵循的编程标准。本教程源于上海贝尔公司的内部编程规范,旨在帮助程序员提高代码质量和可维护性,是C语言学习者进阶的...

    <<C编程精粹>> Steve Maguire 著 PDF

    《C编程精粹》是由Steve Maguire撰写的一本关于C语言高级编程的书籍,它针对已经掌握C语言基础的读者,旨在深入探讨C语言的精髓和最佳实践,以提升编程技巧和代码质量。这本书在C语言的学习者和开发者中享有很高的...

    c-#高级编程源代码

    8. **异构集合与泛型接口**:如`IEnumerable&lt;T&gt;`和`IQueryable&lt;T&gt;`接口,以及它们对应的实现如`List&lt;T&gt;`和`Dictionary&lt;TKey, TValue&gt;`,这些集合和接口提供了灵活的数据存储和遍历方式。 9. **元编程与反射**:C#中...

    林瑞博士C++高质量编程

    《林瑞博士C++高质量编程》是一本深受程序员喜爱的经典著作,主要针对C++语言,旨在帮助读者构建高质量、高效且可维护的代码。作者林锐博士以其深厚的编程经验和独特的见解,为读者揭示了C++编程中的关键技术和最佳...

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

    除了这些基础内容,《C/C++高质量编程指南》还深入探讨了命名约定、异常处理、内存管理等高级话题。例如,在命名约定方面,作者强调了其对代码可读性和一致性的贡献,提倡开发者遵循一套统一的命名规则,从而提升...

    C++高质量编程经典版

    《C++高质量编程经典版》作为一本专注于提升C++编程质量的书籍,自2001年首次出版以来,便成为了程序员提高编程水平的宝贵资源。 本书由林锐博士撰写,书中不仅包含了大量的编程知识,还融入了作者多年来在软件开发...

    C语言高质量编程书籍

    《C语言高质量编程书籍》是一本致力于提升C语言编程技巧的专业读物,旨在帮助程序员编写出更高效、更可靠、更易于维护的代码。书中的内容深入浅出,结合实际项目案例,使得学习过程既有趣又有挑战性。下面将详细探讨...

    高级编程指南以及高质量c++编程

    在深入探讨《高级编程指南以及高质量C++编程》这一主题之前,我们首先需要理解C++语言的核心特性及其在软件开发中的重要性。C++是一种通用的、面向对象的编程语言,以其高效、灵活和强大的功能著称。它不仅继承了...

Global site tag (gtag.js) - Google Analytics