尝试从分配的内存中打印字符串时程序崩溃

时间:2015-12-06 22:49:34

标签: c malloc

我正在测试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;
}

1 个答案:

答案 0 :(得分:1)

崩溃是因为malloc在运行之间没有保存它的内容,所以在你的第二次运行中你是从未初始化的指针打印的。

你期待什么&#34;前提失败&#34;看起来像?工作打印,但具有不同的值?