关于malloc的问题

时间:2012-08-01 18:54:23

标签: c malloc sizeof

有人可以向我解释这部分代码吗?如果我错了,请纠正我。

int *longest = malloc(sizeof(int)); 
*longest =0;

这是否意味着:

  1. 返回指针指向大小为4字节的内存块的开头(对于32位机器)?为什么不写malloc(4)
  2. 对于第二行,是否意味着最长的是4字节块的指针,从0开始?

1 个答案:

答案 0 :(得分:6)

  1. 是的,它为一个int提供了足够的内存。你应该避免明确假设一个给定的大小 - 这将成为将来移植到其他平台的噩梦。你自己发现了它 - sizeof(int)并不总是四处都是。

  2. 不,这会将值0分配给新分配的内存,longest指向该内存。这里的*是解除引用操作符,它非正式地说“我想使用这个指针指向的东西”。