【发布时间】:2010-02-06 18:18:19
【问题描述】:
我有一个简单的 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;
}
【问题讨论】:
-
调用realloc的代码是什么样子的?
-
你是否在 realloc 之后检查失败?
-
没有错误是警告
-
我认为您在第 42 行有错误。或者,给我们看一些代码。
标签: c memory-management malloc dynamic-memory-allocation realloc