【发布时间】:2016-06-26 14:35:52
【问题描述】:
在这段代码 sn-p 中,realloc 相当于 malloc 但我无法得到逻辑。
int *ptr=(int*) realloc(NULL,10*sizeof(int));
为什么要创建一个新块,因为 NULL 是在 stdio.h 中定义为 0 的宏,所以这意味着它指向在大多数机器中是系统区域的基地址 0,那么 realloc 如何开始分配内存从基地址 0 到 10 个整数,为什么这不是分段错误?
【问题讨论】:
-
传递 NULL 并不意味着将使用地址 0。
-
但它是一个值为 0 的宏,而 realloc 的第一个参数是一个指针,所以当我们将 0 传递给一个指针变量时,它暗示 0 是一个地址不是吗?
-
你做了很多不正确的假设。
-
documentation 对此非常清楚。
-
谷歌也是如此。谷歌搜索您的确切标题给出:“大约 78,500 个结果”,您的问题作为第一个条目,其答案作为第二个条目。如果您没有先询问 SO,那么您的答案就会排在首位。
标签: c