gpt4 book ai didi

c - realloc 似乎没有扩大阵列

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:06 25 4
gpt4 key购买 nike

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

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 变量。

关于c - realloc 似乎没有扩大阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com