相关疑难解决方法(0)

realloc():重新分配时为下一个大小无效,以便为char*上的strcat腾出空间

我在以下代码中收到无效的内存错误:

printf(" %s\n","FINE 5");
printf("%s LENGTH IS: %d\n","FINE 6",strlen(": "));
buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(": ")+1)* sizeof(char));
printf(" %s\n","FINE 7");
strcat(buffer, ": \0");
Run Code Online (Sandbox Code Playgroud)

输出:

FINE 5
FINE 6 LENGTH IS:
检测到 2 *glibc* ./auto:realloc():下一个大小无效:0x08cd72e0***======= Backtrace:=========/lib/tls /i686/cmov/libc.so.6(+0x6b591)[0x6dd591]

这里需要注意的Fine 7是从未打印过.每次运行时无效的下一个大小错误位于同一位置.

发现这种相关性

c string malloc realloc strcat

13
推荐指数
2
解决办法
5万
查看次数

标签 统计

c ×1

malloc ×1

realloc ×1

strcat ×1

string ×1