c - 结构数组 - C 中的内存释放

标签 c memory-management data-structures struct priority-queue

我正在尝试使用静态数组实现基于二叉堆的优先级队列(稍后我将使用链表,只是想先用数组进行测试)。

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]);

我收到未分配指针被释放错误。这是正确的实现方式吗?如何解决内存问题?

我正在使用带有 Apple LLVM 4.2 编译器的 Xcode。这整件事最终将被放入一个更大的 Objective-C 项目中,但现在我不想使用 NSMutableArray。我想要一个简单的 C 解决方案。

最佳答案

如果您使用过 malloc() 或 calloc(),则只需调用 free()。事实上,试图释放任何其他东西是未定义的行为

就目前而言,您的代码不会泄漏任何内存。

关于c - 结构数组 - C 中的内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311753/

相关文章:

c - 在多个 C 文件上运行自动化测试

c - 为什么这个CPU运行速度更快?

c++ - 图上的代码输出和本地竞赛的一些声明?

python - 如何在不删除项目的情况下获取队列中的项目?

基本函数的 C 编译错误

C 宏函数 If...Else 值

c++ - 在数组中存储 200kb 的数据?

objective-c - 永远不会调用UIImage dealloc

JAVA扩展类的内存使用

data-structures - MATLAB 中有 "queue"吗?