关于malloc的问题

zee*_*jan 2 c malloc sizeof

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

int *longest = malloc(sizeof(int)); 
*longest =0;
Run Code Online (Sandbox Code Playgroud)

这是否意味着:

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

Fle*_*exo 6

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

  2. 不,这将值0分配给新分配的内存,这是由指向的longest.在*这里是引用操作,它非正式地说:"我想用的东西该指针指向工作".