我有一个结构如下图的malloc两次结构
typedef struct Mystruct{
char *name;
int telno;
struct Mystruct *nextp;
}data;
现在我的malloc结构
data *addnode;
addnode = malloc (sizeof(data));
现在我想将数据添加到char *name
。
addnode->name = malloc (sizeof(MAX));
问题:为什么需要它malloc
一遍吗?
我假设malloc
-addnode
将甚至为addnode->name
分配内存,但事实并非如此。
第一个'malloc'只是分配内存来存储'char * name'的指针.. –
假设你的假设是正确的,'malloc'为'name'分配了空间指向,它会如何知道' MAX'是你需要的尺寸?它不知道,所以它不可能做你想要的。 –
如果事先知道名称的长度(或者至少是最大可能的长度),则可以使用'char * name'的char name [MAX]。然后你不需要malloc了。 – Wutz