我正在尝试理解realloc是如何工作的。这是我的程序。它给出了一些奇怪的错误。有谁可以帮我?我只是试着为数组a做realloc。感谢任何帮助。
#include<stdio.h>
int main()
{
char a[5]="abcd";
char *p;
p = realloc(a,10);
strcpy(a,"abcdefghi");
printf("%s", a);
return 0;
}发布于 2012-03-28 19:28:19
您必须向realloc传递一个指针,该指针指向由malloc或它的某个朋友分配的内存。在您的代码中,您正在传递a,这是一个堆栈分配的变量。
请注意,您不能修改堆栈分配数据的大小,因此如果您的代码确实需要修改变量的大小,则必须在堆上分配该变量。
发布于 2012-03-28 19:28:35
你不能通过malloc来realloc你没有(最初)得到的内存,就这么简单。
发布于 2012-03-28 19:29:03
你不能重新分配没有通过malloc,calloc (或类似的动态内存分配功能)分配的内存。
https://stackoverflow.com/questions/9906510
复制相似问题