深入理解 C 指针阅读笔记 -- 第六章
Chapter6.h
#ifndef __CHAPTER_6_
#define __CHAPTER_6_
/*《深入理解C指针》学习笔记 -- 第六章*/
typedef struct __person
{
char* name;
char* title;
unsigned int age;
}person;
/*结构体内存的释放问题*/
void __struct_memory_test();
#endifChapter6.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);
}
浙公网安备 33010602011771号