操作字符串时 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
(或变体)返回的内存上使用 realloc
或 free
。没有别的。
另请参阅:
- String literals: Where do they go?
我一直在尝试使用 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
(或变体)返回的内存上使用 realloc
或 free
。没有别的。
另请参阅:
- String literals: Where do they go?