重新分配不起作用

use*_*016 1 c

我试图了解 realloc 的工作原理。这是我的程序。它给出了一些奇怪的错误。谁能帮我?我只是想对数组 a 进行重新分配。任何帮助表示赞赏。

#include<stdio.h>

int main()
{
    char a[5]="abcd";
    char *p;
    p = realloc(a,10);
    strcpy(a,"abcdefghi");
    printf("%s", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

您必须传递realloc一个指向由其malloc或其朋友分配的内存的指针。在您的代码中,您传递的a是堆栈分配的变量。

请注意,您无法修改堆栈分配数据的大小,因此如果您的代码确实需要修改变量的大小,则必须在堆上分配该变量。