gpt4 book ai didi

c - glib g_array_append_val() 表现得很奇怪

转载 作者:行者123 更新时间:2023-11-30 15:36:58 25 4
gpt4 key购买 nike

我有这段非常简单的代码。我在 C 中声明了一个 glib double 组。然后使用 g_array_append_val() 函数填充它,最后打印出数组内容。打印出来的版本没有显示数组项为 0.0、1.0、2.0、..9.0,正如我所期望的那样。这可能有什么问题吗?有什么想法吗?

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 库的测试套件,发现他们确实是这样做的。这让我很困惑。

最佳答案

用户 nemequ 给我指明了正确的方向。我发现在另一个函数调用中,我使用 free(data); 释放了数据 GArray;打电话,这不好。 GArray 应该使用 g_array_free(data, TRUE) 释放;那是我的问题。内存已损坏。

关于c - glib g_array_append_val() 表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22387561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com