c - 最后一个内存块中 Calloc 中的垃圾值

标签 c dynamic-memory-allocation

main()
{
  int *p;
  p = calloc(5,2);
  int i;
  for(i=0;i<5;i++){
    printf("%d ",*(p+i));
  }
}

当calloc默认将所有 block 的内存设置为零时,为什么输出在最后一个内存块中给出垃圾值?

最佳答案

您应该使用calloc(5, sizeof(int))。您分配了 5 x 2 字节,但 int 通常是 4 字节大。由于可移植性,使用 sizeof() 是一个很好的做法。

关于c - 最后一个内存块中 Calloc 中的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706937/

相关文章:

c - 是否可以使用相同的静态void函数在c中使用多个线程?

c - 尽管代码编译正确,但 Vim 显示警告

arrays - malloc 接触未分配的内存

c - 何时以及为何使用 malloc

c++ - C++ 中的 Realloc 等价物

c - C 数据类型的内存分配

c++ - 为什么在eclipse CDT 编辑器中断点用反斜杠标记?

c - 两个字符串中的第一个字符不会在 C 中交换

c++ - 动态数组删除旧指针并将其设置为新数组 C++

c - 查找内存C中指针的值