我正在尝试使用静态数组实现基于二进制堆的优先级队列(稍后我将使用链表,只是想先用数组进行测试)。
typedef struct n
{
    int x;
    int y;
    int size;
    double value;
} node;
node arr[100];
int total = 1;
void insertElement(int x, int y, int size, double value)
{
    node n;
    n.x     = x;
    n.y     = y;
    n.size  = size;
    n.value = value;
    arr[total] = n;
    if (total > 1)
        insertArrange(total);
    total += 1;
}
现在在删除函数中,我将只返回最顶层的节点并将其删除,然后重新排列整个堆。问题是我无法释放任何内存。假设我使用
free(&arr[1]);
我得到指针被释放没有分配错误。这是正确的实施方式吗?如何解决内存问题?
我将 Xcode 与 Apple LLVM 4.2 编译器一起使用。整个事情最终将被放入一个更大的 Objective-C 项目中,但现在我不想使用 NSMutableArray。我想要一个简单的 C 语言解决方案。