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指针>学习笔记 -- 第五章*/ /*不应该改动的字符串就应该用 ...

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

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

  3. 《图解HTTP》阅读笔记--第六章--HTTP首部

    第六章.HTTP首部 <非常重要且恐怖的一章了> HTTP报文=报文首部+(CR+LF)+报文实体 首部字段:HTTP报文首部字段=(首部字段名:字段值)们---类型*4: 通用首部字段( ...

  4. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  5. Android群英传笔记——第六章:Android绘图机制与处理技巧

    Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...

  6. JVM学习笔记-第六章-类文件结构

    JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...

  7. 深入理解C指针----学习笔记

      深入理解C指针     第1章 认识指针   理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址.     1.1 指针和内存   C程序在编译后,以三种方式使用内存: 1. 静态. ...

  8. 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)

    <Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文 ...

  9. 韩松毕业论文笔记-第六章-EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING

    难得跟了一次热点,从看到论文到现在已经过了快三周了,又安排了其他方向,觉得再不写又像之前读过的N多篇一样被遗忘在角落,还是先写吧,虽然有些地方还没琢磨透,但是paper总是这样吧,毕竟没有亲手实现一下 ...

随机推荐

  1. JS 中的事件绑定、事件监听、事件委托是什么?

    在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代理)等.这些名词是什么意思呢,有什么作用呢? 事件绑定 要想让 JavaScri ...

  2. && (and)、||(or) 条件语句

    当前面条件满足时,就执行后面的代码 //条件为真时,就执行其中的语句 if($a>0){ $b='This is test'; } //上面的写法太麻烦,可以这样简写 $a>0 & ...

  3. python基础一 day4 字典

    增加:   结果 删:  结果: 结果:   返回值是一个元组形式的键值   改: 结果: 结果:                                      代码: info=inpu ...

  4. Low Speed High Torque Hydraulic Motor: Motion Performance

    Crank connecting rod type low speed high torque hydraulic motor is used earlier, which is called Sta ...

  5. 12scrapy_redis

    一.简介 1.redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zse ...

  6. Ubuntu配置TFTP服务器

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务 ...

  7. p3386 二分图匹配模板

    https://www.luogu.org/problemnew/show/P3386 可以只做一边的匹配 #include <bits/stdc++.h> using namespace ...

  8. Linux常用命令大全 --- 文件备份和压缩命令

    在linux中,常用的文件压缩工具有gzip.bzip2.zip . bzip2是最理想的压缩工具,它提供了最大限度的压缩.zip 兼容性好windows也支持 1.bzip2 命令 在shell 提 ...

  9. 跟初学者学习IbatisNet第四篇

    这一章我们主要介绍一下IbatisNet里面的其它用法主要有以下几点: 1,如何得到运行时ibatis.net动态生成的SQL语句? 2,如何获取DbCommand? 3,如何返回DataTable, ...

  10. linux 在当前目录下查找一个,或者多个文件

    1.find ./ -name "y*" 查找以y开头的文件. find ./ -name "*sql*" 查找包含 sql 的文件名 2.查找redis su ...