簡體   English   中英

有關C語言中內存分配的問題

[英]Issue regarding memory allocation in C

由於某些原因,我無法正確釋放我創建的結構,如下所示:

struct dictionary{

char word[50]; // Word to be described
char definition[150]; // Definition of said word
struct dictionary* next; // Linked list structure

}*dic;
typedef struct dictionary Dic;

Dic* newWord(char word[], char definition[]){
    Dic* dc;
    dc = malloc(sizeof(*dic));

    strcpy(dc->word,word);
    strcpy(dc->definition,definition);
    dc->next = NULL;

return dc;
}

現在,如果我做類似的事情:

dc = newWord("Word","definition");
free(dc);
printWord(dc);

哪里:

void printWord(Dic* dic){
    if(dic){
    printf("<%s>\n",dic->word);
    printf(".%s\n",dic->definition);
    }
}

將導致不打印任何單詞,但仍在打印定義,我只能假設這意味着我沒有正確釋放此結構的內存。 如何正確執行操作?

釋放指針后,您正在使用指針。 這是未定義的行為 ,這意味着C編譯器可以執行所需的任何操作。 它可能會崩潰,看起來可能正常運行,或者在這之間可能做任何事情。 在指針上調用free不會將其設置為NULL ,它會釋放對內存的聲明,但是您必須自己將其設置為NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM