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

结构体如下:

struct student{
	Int num;

	Char* name;

} Tom,*Lily;

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

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

使用完毕要释放内存:

free(Tom.name);

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

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

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

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

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

free(Lily.name);
free(Lily);

3.若要建立一个有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);

猜你喜欢

转载自blog.csdn.net/a2241076850/article/details/81091660