繁体   English   中英

Realloc功能无法正常工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM