struct list{
int a,b,c;
struct list *next, *previous;
}
现在我需要知道两种情况下分配的内存差异:
1) struct list *ptr = (struct list*)malloc(sizeof(struct list*));
和
2) struct list *ptr = (struct list*)malloc(sizeof(struct list));
答案 0 :(得分:1)
您输入了两次相同的行。两者都是一样的。
struct list *ptr = (struct list*)malloc(sizeof(struct list*));
您已在此处分配了大小为sizeof(struct list*)
这里struct list *是一个指向struct struct的指针。因此,32位机器上任何指针的大小为4字节,而64位机器上的指针大小为8字节。
所以你分配了那么多记忆。
我认为在第二种选择中你可能想问这个问题
struct list *ptr = (struct list*)malloc(sizeof(struct list));
此处您已分配了大小为struct list.