0
我有這段非常簡單的代碼。我在C中聲明瞭一個glib數組,然後使用g_array_append_val()函數填充它,最後打印出數組內容。打印出來的版本不會像我所期望的那樣將數組項目顯示爲0.0,1.0,2.0,... 9.0。這有什麼不對?有任何想法嗎?glib g_array_append_val()代理奇怪
GArray *data;
data = g_array_new(FALSE, FALSE, sizeof(double));
int i;
for(i = 0; i < 10; i++) {
double d = (double)i;
g_array_append_val(data, d);
}
for(i = 0; i < 10; i++)
printf("%f ", g_array_index(data, double, i));
free(data);
輸出是在這裏:
0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 0.000000 0.000000 0.000000 0.000000
我連擡頭的測試套件glib庫,看到他們做這種具體的方式。這讓我感到困惑。
這對於我來說是最小的測試用例的一部分(我基本上只是將它們包含在main()中)。你這樣做對你有用嗎?我想在你的程序的其他地方可能會有一些內存損壞,從而導致問題在這裏... – nemequ
你說得對。它一定是某種內存腐敗。我在測試套件函數中運行這個。儘管如此,函數中沒有其他的東西。只要我將它移動到主函數並從中移除其他所有內容(沒有調用測試函數),它就開始工作。看起來我的測試套件不知何故破壞了內存。感謝您的幫助,並抱歉發佈了一個對其他人可能不太有用的問題。如果您將其作爲答案發布,我會接受它。 – pkout