假设我已经使用 malloc()
分配了内存,如果我在我的代码中这样做:
char *newline = realloc ( oldline , newsize );
// Assuming oldline is the pointer to which the starting address
// of the memory which malloc() has returned, is assigned and,
// say, newsize is integer having 100 value.
现在我的问题是:-
newline
是否必须指向与 oldline
相同的地址,该地址保存了先前的初始地址? oldline
将被释放(隐式)并且 newline
将负责内存寻址? free(newline);
或者
free(oldline);
或两者?
最佳答案
这取决于 realloc
是否成功。如果 realloc
成功,则:
oldline
之后没有足够的连续内存,那么 newline
将与 oldline
不同。 free(newline);
因为 oldline
已在必要时被释放。重新分配后 oldline
应视为无效指针。 如果不成功。然后,你使用
oldline
就好像什么都没发生一样,特别是你应该释放它。关于c - realloc() 如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22735092/