我的代碼包含來自Patient**
的struct BeforeTriag
。 這裏的結構和它的領域:C:如何釋放包含char *和ENUM(int)字段的struct **?
typedef struct{
char Id[ID_SIZE];
char Name[NAME_SIZE];
char LastName[NAME_SIZE];
char PhoneNum[PHONE_SIZE];
STATUS Status;
char Address[ADDRESS_SIZE];
}Patient;
這是我動初始化和配置:
Patient** BeforeTriag = NULL;
int* BeforeTriagSize[1] = { 0 };
BeforeTriag = (Patient**)malloc(sizeof(Patient*));
if (!(BeforeTriag))
{
printf("ERROR!Out of memory!");
exit(1);
}
*BeforeTriag = (Patient*)malloc((PatientArraySize)* sizeof(Patient));
if (!(*BeforeTriag)){
printf("ERROR!Out of memory!");
exit(1);
}
在這裏,我特林釋放在結構數據中每個字段:
for (i = 0; i < (*BeforeTriagSize); i++){
free((BeforeTriag)[i]->Id);
free((BeforeTriag)[i]->Name);
free((BeforeTriag)[i]->LastName);
free((BeforeTriag)[i]->Address);
free((BeforeTriag)[i]->PhoneNum);
}
free(BeforeTriag);
當我調試它時,暗戀免費ID的第一行: free((BeforeTriag)[i]->Id);
我應該怎麼做才能正常釋放?
它仍然在粉碎線:free(BeforeTriag [i]); 錯誤說:損壞的堆棧 –
@daniel_a然後我們需要了解更多關於如何管理陣列的信息。具體而言,如何擴展數組並跟蹤大小,以及如何讀取/寫入數據。 – dbush
好的,謝謝。我會盡力寫更多的細節。 –