gpt4 book ai didi

c - g_array_sort() 调用但不排序

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:30 25 4
gpt4 key购买 nike

这是我的代码:

gint compare_ulong_function (gconstpointer a, gconstpointer b)
{
return *(unsigned long *)a - *(unsigned long *)b;
}

GArray* build_priority_queue(unsigned char* const input_data, unsigned int const input_size)
{
GArray* priority_queue = g_array_sized_new(FALSE, TRUE, sizeof(unsigned long), 256);

int i;
for (i = 0; i < input_size; i++)
g_array_index(priority_queue, unsigned long, input_data[i])++;
g_array_sort(priority_queue, compare_ulong_function);

return priority_queue;

当我调试时调用了 g_array_sort(无法进入缺少开发包的函数并且无法安装它)但数组未排序。永远不会调用 compare_ulong_function。

最佳答案

就 glib 而言,您实际上并未向数组添加任何元素。您只是为它们预先分配了空间,然后开始直接访问它们的内存(g_array_index 不会检查您是否在边界内)。

g_array_sort 仍然看到数组的大小为 0。(它为 256 个元素分配了空间,但没有添加任何元素)。

尝试在循环之前执行 g_array_set_size(input_size)

关于c - g_array_sort() 调用但不排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725599/

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