1. 程式人生 > >結構體陣列的指標初始化與記憶體釋放

結構體陣列的指標初始化與記憶體釋放

結構體如下:

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);