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