結構體陣列的指標初始化與記憶體釋放
阿新 • • 發佈:2018-12-29
結構體如下:
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);