Ank*_*kur 0 c memory-management
当relloc必须将分配的内存大小调整为更大的大小时,它是如何表现的,并且必须在单独的内存区域中完成,因为所请求的内存量可以在适当的位置调整大小.原始内存是否由relloc自动解除分配(我会这么认为)或者必须由程序员完成(不太可能)?
是的,realloc自动处理释放原始内存.如果可以将内存块调整到适当的位置,那么realloc将会这样做.如果没有,它将分配一个足够大的新内存块,将旧块中的数据复制到新块,并释放旧块.您不必担心自己释放它.
如果realloc失败(例如,你要求太多的内存,并且它不能分配那么多),那么原始内存不会被释放.如果你不小心,你可能会泄漏内存 - 如果realloc由于失败而返回NULL并且你没有保留指向原始内存块的指针,那么该内存将保持分配和泄漏.