函数不能为 C 中的指针分配内存

Function can not allocate memory for a pointer in C

我有一个名为 "visitor" 的结构,我想编写一个函数来为我指向这个结构的指针分配内存...

此代码有效:

visitor *visitorPtr = NULL;
int visitorCounter = 0;
visitorPtr = realloc(visitorPtr, ((visitorCounter++) * sizeof(visitor)));

但现在我想把这个功能放到一个函数中

void getMoreSpace(void *ptr, unsigned int counter)
{
    counter++;
    ptr = realloc(ptr, counter * sizeof(visitor));

    if (ptr == NULL)
    {
        printf("\n Error allocating memory! \n");
        return EXIT_FAILURE;
    }
}

//Call in MAIN:
getMoreSpace(visitorPtr, visitorCounter);

不幸的是,它似乎不起作用,因为我无法为此指针创建数据,并且在为该结构创建数据时出现此错误: 在 My-C-Project.exe 中的 0x0FDAE559 (ucrtbased.dll) 抛出异常:0xC0000005:访问冲突写入位置 0x00000000.

visitorPtr 作为值传递给 getMoreSpace 函数。因此,在函数内对 ptr 所做的任何更改都不会更新 main.

中的 vistorPtr

您需要的是通过引用调用函数,如下所示。

void getMoreSpace(void **ptr, unsigned int counter)
{
    counter++;
    *ptr = realloc(*ptr, counter * sizeof(visitor));

    if (*ptr == NULL)
    {
        printf("\n Error allocating memory! \n");
    }
}

你从 main 调用如下。

getMoreSpace(&visitorPtr, visitorCounter);
if (visitorPtr)
   ...do stuff....