c语言文件读取数据出现wntdll.pdb符号集无法加载,fread无法使用指针来读取数据,只能使用引用&

今天写c语言遇到了一个问题:
当我定义了一个结构体,并将其按照二进制写入到文件里面。
结构体如下:

// An highlighted block
struct TestData
{
	int opp1; //操作数1
	int opp2; //操作数2
	int key; //标准答案
	int num; //用户输入
	int flag; //对错标记
};

当我读取文件的时候,进行了如下操作:

// An highlighted block
strcut TestData*NowQuestion=(struct TestData*)malloc(sizeof(struct TestData*)*1);//使用指针申请一块空间
fread(NowQuestion, sizeof(struct TestData), 1, ErrorSet);

这时候虽然运行没问题,但是下面的代码都会出现符号集无法加载的情况,具体原因我也不知道。
关于fread函数的定义

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr – 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size – 这是要读取的每个元素的大小,以字节为单位。
nmemb – 这是元素的个数,每个元素的大小为 size 字节。
stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。

按理说这个ptr可以是我所申请的文件指针,但是这里这么做就是出了问题。

最后我的解决方法:
将指针改为对于一个已经存在的结构体的引用:

struct TestData NowQuestion;
fread(&NowQuestion, sizeof(struct TestData), 1, ErrorSet);

这样运行就没有问题了。

经验:
当出现符号集无法加载的时候,不要总想着换地址下载符号集什么的,可能就是你的代码写错了,指针出了问题之类的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章