2009-09-19 66 views
0

当relloc必须将分配的内存调整为更大的大小时,relloc的行为如何,必须在单独的内存区域中完成,因为请求的内存量可以在现场调整大小。原始内存是否被relloc自动释放(我会这么认为)还是必须由程序员完成(不太可能)?调整大小时的relloc行为

回答

5

是的,realloc自动处理释放原始内存。如果内存块可以调整大小,那么realloc会这样做。如果不是,它将分配一个足够大的新内存块,将数据从旧块复制到新块,并释放旧块。你不必担心自己释放它。

如果realloc失败(例如您请求的内存太多而且分配不了太多),那么原始内存为而不是已释放。如果你不小心,可能会泄漏内存 - 如果realloc由于失败而返回NULL,并且不保留指向原始内存块的指针,则该内存将保持分配并泄漏。

相关问题