#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Person{
char* name;
int age;
};
struct Person** allocateSpace()
{
int i;
struct Person** pArray = (struct Person**)malloc(sizeof(struct Person*)* 3);
for(i = 0;i < 3;i++)
{
//给每个结构体开辟内存
pArray[i] = (struct Person*)malloc(sizeof(struct Person));
//给每个结构体的姓名 开辟内存
pArray[i]->name = (char*)malloc(sizeof(char)*64);
sprintf(pArray[i]->name,"name_%d",i + 1);
pArray[i]->age = i + 20;
}
return pArray;
}
void printArray(struct Person** arr,int len)
{
int i;
for(i = 0;i < len;i++)
{
printf("姓名:%s 年龄:%d\n",arr[i]->name ,arr[i]->age );
}
}
void freeSpace(struct Person** pArray,int len)
{
int i;
for(i = 0; i < len; i++)
{
//释放姓名空间
if(pArray[i]->name != NULL)
{
free(pArray[i]->name);
pArray[i]->name = NULL;
}
//释放结构体
if(pArray[i] != NULL)
{
free(pArray[i]);
pArray[i] = NULL;
}
//释放数组
/*
if(pArray != NULL)
{
free(pArray);
pArray = NULL;
}
*/
}
//释放数组
if(pArray != NULL)
{
free(pArray);
pArray = NULL;
}
}
void test01()
{
struct Person** pArray = NULL;//(struct Person**)malloc(sizeof(struct Person*)* 3);
pArray = allocateSpace();
printArray(pArray,3);
//释放内存
freeSpace(pArray,3);
}
int main()
{
test01();
return 0;
}
运行结果:
姓名:name_1 年龄:20
姓名:name_2 年龄:21
姓名:name_3 年龄:22
请按任意键继续. . .