要求对此设计选择进行合理检查。
我正在通过创建一个可以接受字符串或数字节点类型的堆数据结构在 C 中编写堆排序。(我正在创建自己可以排序的私有堆)
堆中的节点是 void*,它们被取消引用以执行比较操作。Heap 结构将每个节点的大小存储在 Heap.nodesize 中,如果节点是字符串,则为 -1。
插入节点时,会为 void* 分配内存。如果 Heap.nodesize 为 -1,则将 strlen(val) 传递给 malloc,否则将 Heap.nodesize 传递给 malloc。
执行比较时,如果 Heap.nodesize 为 -1,则使用 strcmp,否则使用布尔运算符作为数值。
当堆被释放时,我计划循环并释放每个 void*。此时free会知道每个节点要释放多少字节?