我有一种情况需要将对象的指针存储到文件中并在同一进程中再次读取它。我该怎么办?
现在我这样写/读:
Myclass* class = <valid pointer to Myclass>
FILE* output_file = fopen(filename, "w");
fwrite(class, sizeof(class), 1, output_file)
// and read it
FILE* in_file = fopen(filename, "r");
Myclass* class_read
fread(class_read, sizeof(class_read), 1, in_file)
回读时我看不到正确的值。我将在同一地址空间中读取和写入这些文件。
答案 0 :(得分:5)
要读取和写入指针本身,您需要传递其地址,而不是它指向的地址:
fwrite(&class, sizeof(class), 1, output_file);
fread (&class_read, sizeof(class_read), 1, in_file);
^
您正在编写任何class
点的前几个字节,然后尝试将它们读回任何class_read
点(如果它还不是有效指针则失败)。