小编Mik*_*mmm的帖子

C - realloc()函数 - 证明它破坏了数据

看看我用这个简单的代码找到了什么:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *string;

int main(){    

string = (char *) malloc(50*sizeof(char));
strcpy(string, "initi1l wording cont2ining forty-nine ch3r4cters.");
printf("BEFORE: %s\n", string);
string = (char *) realloc(string, 24*sizeof(char));
printf("AFTER: %s\n", string);

system("PAUSE");

return 0;
}
Run Code Online (Sandbox Code Playgroud)

出口是:

BEFORE: initi1l wording cont2ining forty-nine ch3r4cters.
AFTER: initi1l wording cont2inia
Run Code Online (Sandbox Code Playgroud)

请注意字符串末尾的'a'!我不知道它来自哪里,也许在堆中的某个地方.它不是来自原始数据块.最初我使用realloc()与结构数组,它显然以更重要的方式破坏数据.

我该如何解决这个问题?

c memory allocation dynamic realloc

-3
推荐指数
2
解决办法
926
查看次数

标签 统计

allocation ×1

c ×1

dynamic ×1

memory ×1

realloc ×1