struct a {
char *name;
char *value;
struct a *next;
};
struct a *head = malloc(sizeof *head);
單個struct a
對象上面的分配空間,但它不初始化任何HTE的包含在struct a
三個指針。特別是,如果你想name
和value
指向字符串,則需要對這些字符串分配空間:
head->name = malloc(5);
strcpy(head->name, "Fred");
head->value = malloc(8);
strcpy(head->value, "abcdefg";
這大大簡單化。 5
和8
是「幻數」;如果更改初始值,應該以保持一致的方式指定大小。你應該總是檢查malloc()
是否返回一個空指針(即使你只是用一個錯誤信息終止程序)。
如果不初始化name
和value
指向分配的內存塊一些,你威力仍然能夠初始化它們指向什麼(例如,通過執行上面的strcpy
•不用的malloc
S)。更確切地說,系統不一定會診斷錯誤。
最後,您需要致電free()
對應每個malloc()
調用。
請注意,這主要是根據您的描述猜測。如果您可以向我們顯示您的實際代碼,我們可以幫助您更好。
你將不得不展示更多的代碼 - 你直接存儲在值`a-> name`或`a-> value`中,還是爲_them_分配內存? – sarnold 2011-12-14 01:41:26
我直接存儲值而不分配內存。正如Keith Thompson評論的那樣,我爲a-> name和a-> value分配內存,它的工作原理。你知道這有什麼區別嗎?謝謝! – trinity 2011-12-14 03:22:57