【问题标题】:Questions about malloc关于malloc的问题
【发布时间】:2012-08-01 18:54:23
【问题描述】:

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

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

这是否意味着:

  1. 返回一个指向大小为 4 字节的内存块开头的指针(对于 32 位机器)?为什么不直接写malloc(4)
  2. 对于第二行,是否表示longest是一个4字节块的指针,从0开始?

【问题讨论】:

  • 这是针对 C 还是 C++ 的?您应该在此问题中包含一个或另一个标签以使其清楚,并使其显示在搜索等中。另外,如果是 C++,你应该改用new

标签: c malloc sizeof


【解决方案1】:
  1. 是的,它为一个int 提供了足够的内存。您应该避免明确假设给定的大小 - 这使得将来移植到其他平台成为一场噩梦。你自己发现了 - sizeof(int) 不会总是 4 无处不在。

  2. 不,这会将值 0 分配给 longest 指向的新分配的内存。这里的* 是取消引用运算符,它非正式地表示“我想使用这个指针指向的东西”。

【讨论】:

  • 稍微补充一下,对于特定的分配情况,甚至还有一个更好的习惯用法:int *longest = malloc(sizeof(*longest)); 这样可以避免重复类型,所以如果有一天类型发生了变化,一切仍然是一致的。
猜你喜欢
  • 2016-12-29
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
  • 2018-06-26
相关资源
最近更新 更多