在 VS2012 (C) 中编译我的代码时,我收到了 _CrtIsValidHeapPointer(pUserData) 消息。
我意识到我正在尝试使用realloc
on 指针,所以当我阅读其他帖子时,许多人建议使用memcpy
and const char **
。我真的很喜欢这样做,但我只是不知道怎么做。
第一个代码片段:我使用的指针的 Typedef 结构realloc
int clientcounter = 0; //Global variable since this will be needed in other functions
typedef struct client{
char name[254];
int birthday;
int landline;
int cellphone;
int clientnum;
struct client *next;
}clientdata;
我的程序读取文件的内容并通过单链表将其存储到这些变量中。
第二段代码:
void loading_file(clientdata curr[])
{
clientdata *dummy[10000] = {0};
clientdata *head;
clientdata *tail;
head = NULL;
tail = NULL;
//.... Asking for roster file
//.. memory allocation of dummy[clientcounter]
//.... Storing data to variables
if (head == NULL)
{
head = dummy[clientcounter];
}
else
{
tail->next=dummy[clientcounter];
}
tail = dummy[clientcounter];
if (head!=NULL)
{
dummy[clientcounter-1] = head;
do {
printf("\n ::%s:: Name\n",dummy[clientcounter]->name);
curr[clientcounter] = dummy[clientcounter];
dummy[clientcounter] = realloc(dummy,sizeof(item*) * clientcounter); //Error appears Here
dummy[clientcounter] = NULL;
clientcounter++;
dummy[clientcounter] = dummy[clientcounter-1]->next;
}while(dummy[totalitem] != NULL);
}
free(dummy[totalitem-1]);
}
有人告诉我,每次clientcounter++
发生时,我都必须重新分配内存,以免泄漏。我的问题是,我知道导致错误的原因(重新分配指针),但我不知道如何修复它。
谁能教我如何修复代码?