C 中结构的 malloc 部分的 EXC_BAD_ACCESS

问题描述 投票:0回答:1

我正在尝试编写某种面向对象的 C,当我在尝试分配结构时遇到这个完全随机的分配错误时。

这就是我的结构的样子:

typedef struct {
  void **array;
  size_t used;
  size_t size;
} DynArray;

这是有问题的代码,或者至少是所有运行的代码行。

DynArray *dyn_array_create(size_t initial_size /* = 6 */) {
    DynArray *a = (DynArray *) malloc(sizeof(DynArray));
    if (a == NULL) {
        return NULL;
    }
    // EXC_BAD_ACCESS here ↓
    a->array = (void **) malloc(initial_size * sizeof(void *));
    ...
}

我已经验证

a
不为空,我的内存不是太低或类似的东西。更奇怪的是,在此之前有一个测试效果很好。这里根本没有真正的输入。据我所知,测试是相同的。每个的第一行是
DynArray *a = dyn_array_create(6);
。有这方面的线索吗?

c struct malloc exc-bad-access
1个回答
0
投票

这个问题是在我修复内存泄漏时出现的。我想我刚刚设法修复了错误的数量,给自己留下了一个我实际上可以看到的损坏的堆。感谢所有评论的人。

© www.soinside.com 2019 - 2024. All rights reserved.