0
当relloc必须将分配的内存调整为更大的大小时,relloc的行为如何,必须在单独的内存区域中完成,因为请求的内存量可以在现场调整大小。原始内存是否被relloc自动释放(我会这么认为)还是必须由程序员完成(不太可能)?调整大小时的relloc行为
当relloc必须将分配的内存调整为更大的大小时,relloc的行为如何,必须在单独的内存区域中完成,因为请求的内存量可以在现场调整大小。原始内存是否被relloc自动释放(我会这么认为)还是必须由程序员完成(不太可能)?调整大小时的relloc行为
是的,realloc
自动处理释放原始内存。如果内存块可以调整大小,那么realloc
会这样做。如果不是,它将分配一个足够大的新内存块,将数据从旧块复制到新块,并释放旧块。你不必担心自己释放它。
如果realloc
失败(例如您请求的内存太多而且分配不了太多),那么原始内存为而不是已释放。如果你不小心,可能会泄漏内存 - 如果realloc
由于失败而返回NULL,并且不保留指向原始内存块的指针,则该内存将保持分配并泄漏。