结构体数组的指针初始化与内存释放

本文详细介绍了C语言中结构体的定义方式及其内存管理方法,包括如何为结构体和其成员分配内存以及如何正确地释放内存资源,旨在帮助程序员理解和避免常见的内存错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构体如下:

Typedef structstudent

{

Int num;

Char* name;

} Tom,*Lily;

 

如果定义成Tom的形式,不需要为结构体分配内存,但是需要对name分配内存

Tom.name =(char*)malloc(sizeof(char)*n);

使用完毕要释放内存:

free(Tom.name);

 

 

如果定义成*Lily的指针形式,则首先要对结构体分配内存

Lily = (student*)malloc(sizeof(student));

然后再如上所示给name分配内存

用完后先释放name的内存,再释放结构体的内存

free(Lily.name);

free(Lily);

 

 

若要建立一个有n元素结构体数组Student  *class

class =(student*)malloc(sizeof(student)*n)

 

初始化name

for(i = 0; i<n;i++)

{

  Class[i].name = (char*)malloc(sizeof(char)*m);

}

 

释放内存

for(i = 0; i<n;i++)

{

  free(Class[i].name)

}

free(class);

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值