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

结构体如下:

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

{

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

}

 

释放内存

for(i = 0; i

{

  free(Class[i].name)

}

free(class);

 

你可能感兴趣的:(C++)