Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于malloc的问题_C_Malloc_Sizeof - Fatal编程技术网

关于malloc的问题

关于malloc的问题,c,malloc,sizeof,C,Malloc,Sizeof,有人能给我解释一下这部分代码吗?如果我错了,请纠正我 int *longest = malloc(sizeof(int)); *longest =0; 这是否意味着: 返回一个指针,指向大小为4字节的内存块的开头(对于32位机器)?为什么不直接编写malloc(4) 对于第二行,它是否意味着最长的是一个4字节块的指针,从0开始 是的,它有足够的内存存储一个int。您应该避免显式地假设给定的大小—这会使将来移植到其他平台成为一场噩梦。你自己发现的-sizeof(int)不会总是到处都是4 否,

有人能给我解释一下这部分代码吗?如果我错了,请纠正我

int *longest = malloc(sizeof(int)); 
*longest =0;
这是否意味着:

  • 返回一个指针,指向大小为4字节的内存块的开头(对于32位机器)?为什么不直接编写malloc(4)
  • 对于第二行,它是否意味着最长的是一个4字节块的指针,从0开始
  • 是的,它有足够的内存存储一个
    int
    。您应该避免显式地假设给定的大小—这会使将来移植到其他平台成为一场噩梦。你自己发现的-
    sizeof(int)
    不会总是到处都是4

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


  • 这是C还是C++?你应该在这个问题中包含一个标签或另一个标签,以使其清晰,并使其显示在搜索等中。此外,如果是C++,则应该使用<代码>新< /Cord>。只是一个小的附加项,对于那个特定的分配情况,甚至有更好的习惯用法:<代码> int *最长=Maloc(siZeof(*最长));代码>这避免了重复类型,因此,如果某一天类型发生了更改,则所有操作仍然是一致的。