函数不能为 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....
我有一个名为 "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....