У меня есть простая программа на C, которая имеет указатель на массив символов. Чтобы запустить его, я использую malloc
, а затем изменяю его размер, а затем устанавливаю его x раз в программе.
Когда я изменяю его размер один раз с помощью realloc
, gdb не показывает никаких ошибок, однако, если я пытаюсь вызвать функцию изменения размера снова, gdb показывает следующую ошибку:
warning: Invalid Address specified to RtlReAllocateHeap( 003E0000, 00404076 )
Любые идеи, почему изменение его размера более одного раза дает эту ошибку?
EDIT
Я поиграл с этим, и, кажется, ошибка не возникает, когда я закомментирую настройку данных указателя, которая происходит после изменения размера.
void setName(struct class_x *class, char *name)
{
class->name = (char *) reallocateMemory(class->name, sizeof(char) * strlen(name) + 1);
class->name = name;
}
void *reallocateMemory(void *member, size_t size)
{
void *tmp = realloc(member, size);
if(tmp == NULL)
{
//handle
}
return tmp;
}