操作字符串时 realloc 函数返回空指针

Realloc function returning a null pointer when manipulating strings

我一直在尝试使用 realloc 函数和 运行 解决字符串问题:

char *s="hello";

s=realloc(s,size); // this return null

char *p;
p=malloc(5);

strcpy(p,"hello");

p=realloc(p,size) // this works fine

为什么第一次声明失败?

这一行声明 s 并为 "hello" 保留一些静态存储 space,然后将指向它的指针分配给 s

char *s="hello";

第二行试图 realloc 从未动态分配的内存。事实上,它是静态的。

s=realloc(s,size); // this return null

难怪失败了。实际上,它很可能使您的程序崩溃,这是未定义的行为!您只能在先前通过调用 malloc(或变体)返回的内存上使用 reallocfree。没有别的。

另请参阅:

  • String literals: Where do they go?