我有一个简单的 C 程序,它有一个指向字符数组的指针。为了启动它,我使用malloc
, 并调整大小,然后在程序中设置它 x 次。
当我使用 调整大小一次时realloc
,gdb不会显示任何错误,但是,如果我再次尝试调用 resize 函数,gdb会显示以下错误:
warning: Invalid Address specified to RtlReAllocateHeap( 003E0000, 00404076 )
任何想法为什么不止一次调整它会产生这个错误?
编辑
我玩弄了它,当我注释掉指针数据的设置时,似乎没有发生错误,这是在调整大小之后。
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;
}