Chapter6.h

#ifndef      __CHAPTER_6_
#define     __CHAPTER_6_/*《深入理解C指针》学习笔记 -- 第六章*/typedef struct __person
{char* name;char* title;unsigned int age;
}person;/*结构体内存的释放问题*/
void __struct_memory_test();#endif

Chapter6.cpp

#include "Chapter6.h"
#include <stdio.h>
#include <malloc.h>
#include <string.h>/*结构体内存的释放问题*/
/*对于结构体内存在指针的情况,我们需要注意怎样正确的使用这个结构体*/
void __struct_memory_test()
{/*第一种使用结构体的方式*/person ps;/*需要为结构体内的指针分配内存才能存储值*/ps.name = (char*)malloc(sizeof(char) * 16);strcpy(ps.name, "DLUTBruceZhang");ps.title = (char*)malloc(sizeof(char) * 10);strcpy(ps.title, "DLUT");ps.age = 24;/*使用完之后需要释放结构体指针的内存*/free(ps.name);free(ps.title);/*第二种使用结构体的方式*/person* ps2;/*首先,需要为结构体申请内存,但是这里需要注意的是,只是为这个结构体申请内存,结构体内的其他指针需要另外申请别的内存*/ps2 = (person*)malloc(sizeof(person));/*需要为结构体内的指针分配内存才能存储值*/ps2->name = (char*)malloc(sizeof(char) * 16);strcpy(ps2->name, "DLUTBruceZhang");ps2->title = (char*)malloc(sizeof(char) * 10);strcpy(ps2->title, "DLUT");ps2->age = 24;/*使用完内存后需要释放掉,这里需要注意的是释放内存的顺序首先应该释放结构体内指针指向的内存,这里是没有先后顺序的,但是,释放整个结构体的内存一定是最后一步*/free(ps2->name);free(ps2->title);free(ps2);
}

深入理解 C 指针阅读笔记 -- 第六章相关推荐

  1. 深入理解 C 指针阅读笔记 -- 第五章

    Chapter5.h #ifndef __CHAPTER_5_ #define __CHAPTER_5_/*<深入理解C指针>学习笔记 -- 第五章*//*不应该修改的字符串就应该用 co ...

  2. 深入理解 C 指针阅读笔记 -- 第四章

    Chapter4.h #ifndef __CHAPTER_4_ #define __CHAPTER_4_/*<深入理解C指针>学习笔记 -- 第四章*//*指针数组 -- 意思就是这是一个 ...

  3. 深入理解 C 指针阅读笔记 -- 第三章

    Chapter3.h #ifndef __CHAPTER_3_ #define __CHAPTER_3_/*<深入理解C指针>学习笔记 -- 第三章*//*它们都保存在栈中的什么位置?*/ ...

  4. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_/*<深入理解C指针>学习笔记 -- 第二章*//*内存泄露的两种形式1.忘记回收内 ...

  5. 深入理解 C 指针阅读笔记 -- 第一章

    上周末,我在图书馆看到了这本很薄的书 -- <深入理解 C 指针>       这本书中写的内容,个人感觉适合一个初学者,内容不是很难.我也读了下,对每一章都做了笔记,笔记都是用代码的形式 ...

  6. Computer Vision: A Modern Approach - 计算机视觉书籍阅读笔记 -第六章 - 纹理

    Book name : Computer Vision: A Modern Approach Book URL: https://www.academia.edu/38213969/Computer_ ...

  7. thinking in java 阅读笔记 第六章 类再生

    1.介绍了合成和继承,第一章就介绍过,这里详细的介绍了一下. 2.介绍了继承关系初始化构建方法调用顺序,这些东西建议阅读<<深入理解java虚拟机>>讲得更加透彻. 3.到底选 ...

  8. 计算机的3类系统总线分别是_《深入理解计算机系统》读书笔记—第六章、存储器层次结构...

    存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU寄存器保存着最常用的数据.靠近CPU的小的.快速的高速缓存(SRAM)作为一部分存储在相对慢速的主存储器(DRAM)中数据和指令 ...

  9. 《Go语言圣经》学习笔记 第六章 方法

    <Go语言圣经>学习笔记 第六章 方法 目录 方法声明 基于指针对象的方法 通过嵌入结构体来扩展类型 方法值和方法表达式 示例:Bit数组 封装 注:学习<Go语言圣经>笔记, ...

最新文章

  1. JSP中的重定向和请求转发以及它们的区别
  2. java sleep不能使用_java无主窗口GUI程序主线程不能调用sleep(long)方法,会产生异常...
  3. PaperWeekly社区 | 知识图谱 vs. 对话系统专题讨论
  4. 采用config方式灵活配置我们的Quarz.net中的Job,Trigger
  5. 决策树之前要不要处理缺失值_不要使用这样的决策树
  6. java什么叫一致性,java-顺序一致性易失性说明
  7. java源代码1000_Java源代码
  8. 在创业之路上,每个人都会有很多的老师
  9. 数独基本规则_思维训练|数独入门第五课:唯余解法
  10. java同步队列_Java 中队列同步器 AQS(AbstractQueuedSynchronizer)实现原理
  11. Ubuntu下定时重启程序
  12. 计算机系毕业论文绪论,本科毕业论文绪论范文
  13. Anaconda下载安装
  14. 无法定位程序输入点于动态链接库(更新)
  15. 在ARM板上运行Qt程序
  16. whois的原理及介绍
  17. 获取openwrt mac地址
  18. zmq pub/sub使用详解
  19. Qt-Q_OBJECT宏及控件提升导致的类重定义问题
  20. 如何衡量和分配广告渠道?

热门文章

  1. Android 插件化原理学习 —— Hook 机制之动态代理
  2. 一致性哈希算法介绍,及java实现
  3. Lucene 源码分析之倒排索引(三)
  4. java开发常见的热词奇解
  5. 转载 React.createClass 对决 extends React.Component
  6. 《Redis in action》读书笔记
  7. 如何在友好的情景下向用户索取手机权限?
  8. Linux查看系统开机时间(转)
  9. python实战===图片转换为字符的源码(转)
  10. Centos 6 常用服务部署命令说明