我正在测试malloc
以查看如果程序在没有free()
的情况下退出,分配的内存是否会保留其数据。我将地址保存到文件,而在另一个程序中使用这些地址进行测试,但是& #39;崩溃了。为什么会这样?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*
int main(void)
{
FILE *file;
if(fopen_s(&file,"file.txt","w"))
exit(-1);
char *p1 = (char*)malloc(10*sizeof(char));
char *p2 = (char*)malloc(10*sizeof(char));
strcpy(p1,"A");
strcpy(p2,"B");
fprintf(file,"%x\n",p1);
fprintf(file,"%x\n",p2);
fclose(file);
return 0;
}
*/
int main(void)
{
//these two addresses are from the saved file
char *p1 = (char*)0x341440;
char *p2 = (char*)0x341468;
printf("%s\n",p1);
printf("%s\n",p2);
return 0;
}
答案 0 :(得分:1)
崩溃是因为malloc在运行之间没有保存它的内容,所以在你的第二次运行中你是从未初始化的指针打印的。
你期待什么&#34;前提失败&#34;看起来像?工作打印,但具有不同的值?