c realloc, size 的真正含义是什么

use*_*917 3 c realloc

有人可以解释一下 realloc 中的第二个参数到底是什么,因为我找不到测试它的方法。

所以假设我们有这样的事情

int *p = malloc(sizeof(int)); //we have just enough space to store single int value
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在 p 中存储 2 个 int 值,我是否需要发送到 realloc 作为2 * sizeof(int)块的第二个参数 新大小,或者sizeof(int)因为它需要为 int 大小扩展内存

如果我应该在这种情况下2 * sizeof(int)将新块的总价值发送到 realloc ,如果我只发送它sizeof(int),它会做什么,只返回原始指针并且在内存中什么都不做或其他什么?

Ree*_*sey 5

第二个参数是以字节为单位的内存块的新大小(总新大小)。如果你想要 2 个整数的空间,你会使用2 * sizeof(int).

只是返回原始指针并且在内存中什么都不做或其他什么?

规格不保证这一点。许多实现只会原封不动地返回原始指针,但它们也可以轻松移动它。您不会获得足够大的新内存分配 2 个整数,但是,只有足够大的内存位置中的原始数据值sizeof(int).