我试图释放已经重新分配的内存,但是我得到了一个错误...
float * foo = NULL;
float * bar = NULL;
void update()
{
...
foo = (float *)malloc( a * 2 * sizeof(float));
...
bar = (float *)realloc( foo, a * 2 * sizeof(float));
...
free( foo );
...
// when i do
if(bar != NULL)
{
free(bar); // <-- error at executing
}
}
我遇到了错误:http://d.pr/mpBF,Visual Studio显示以下文件:
osfinfo.c
=========
void __cdecl _unlock_fhandle (
int fh
)
{
LeaveCriticalSection( &(_pioinfo(fh)->lock) );
}
有什么想法吗?
a
变量的值是否为0? - Juhofoo
做了任何操作?或者在realloc和free之间,你是否对bar做了任何操作? - Juhoif(bar != NULL)
有点无用,因为free
在给定空指针时不执行任何操作。 - Damonrealloc
失败,它将返回NULL,并且您将无法释放先前由malloc
调用分配的内存。David Heffernan的答案展示了正确处理malloc
和realloc
的方法。 - Praetorian