realloc 似乎没有扩大阵列

Realloc doesn't seem to enlarge array

所以我必须用 C 为学校项目编写垃圾收集器之类的东西。我被动态内存分配问题困住了。我的函数 growActivePtrs() 应该将全局结构数组扩大一个,但它似乎不起作用。我已经阅读了大量关于动态分配的资料并尝试了很多东西,但我就是找不到错误。

typedef struct activePtr
{
    // pointer to actively used memory
    void *memPointer;
    // number of times this memory is referenced
    int timesUsed;
} activePtr;


activePtr **activePointers;
size_t *ptrCount = 0;


bool growActivePtrs()
{
    const size_t totalSize = *ptrCount + 1;
    activePtr *temp = (activePtr *)realloc(*activePointers, (totalSize * sizeof(activePtr)));

    if (temp == NULL) {
        return false;
    }
    *activePointers = temp;
    *ptrCount += 1;
    activePointers[*ptrCount - 1]->timesUsed = 0;
    activePointers[*ptrCount - 1]->memPointer = NULL;
    return true;
}

任何帮助将不胜感激。谢谢。

size_t *ptrCount = 0;

这将 ptrCount 定义为指向 size_t 的指针,初始化为空指针。除非您为它分配某个实际 size_t 对象的位置(看起来您没有),否则任何访问 *ptrCount 的尝试都注定要失败。

没有理由认为这应该是一个指针。你可以直接存储一个size_t

正如@user3121023 在评论中正确指出的那样,这同样适用于您的 activePointers 变量。