[英]Realloc Function not Working correctly?
为什么以下代码输出4次,而不是8次和20次? 谢谢
int size = 0;
int *pointer;
pointer = malloc(2 * sizeof(int));
size = sizeof(pointer);
printf("%d", size);
int *temp = realloc(pointer, 5 * sizeof(int));
if (temp != NULL) //realloc was successful
{
pointer = temp;
} else //there was an error
{
free(pointer);
printf("Error allocating memory!\n");
}
size = sizeof(pointer);
printf("%d", size);
sizeof
是一个编译 sizeof
算符,它告诉您变量或类型占用多少空间。 你得到的答案是一个常数 。 对于指针, sizeof
告诉您存储内存地址所需的字节数。 这通常在32位平台上为4个字节,在64位平台上为8个字节。
它没有告诉你malloc()
分配了多少内存。 事实证明,遗憾的是没有标准函数来告诉你分配的内存块的大小。 你必须自己跟踪它。
sizeof
在编译时评估,而不是运行时间(除了可变长度数组的情况,C99的奇怪特征)。 在这种情况下,您将获取指针的大小,即4个字节。 即使你使用sizeof(*pointer)
,这也相当于说sizeof(int)
我意识到你试图告诉动态分配内存的大小,但没有标准的方法来做到这一点。 您应该在自己的代码中自己跟踪它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.