C指针查询

时间:2014-04-16 09:59:30

标签: c pointers structure

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));

1 个答案:

答案 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.

大小的内存
相关问题