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);

這樣運行就沒有問題了。

經驗:
當出現符號集無法加載的時候,不要總想着換地址下載符號集什麼的,可能就是你的代碼寫錯了,指針出了問題之類的。

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