据我了解,当被要求保留更大的内存块时, realloc() 函数将执行以下三种不同的操作之一:
if free contiguous block exists
grow current block
else if sufficient memory
allocate new memory
copy old memory to new
free old memory
else
return null
增长当前块是一个非常便宜的操作,所以这是我想利用的行为。但是,如果我重新分配内存是因为我想(例如)在现有字符串的开头插入一个字符,我不希望 realloc() 复制内存。我最终将使用 realloc() 复制整个字符串,然后再次手动复制它以释放第一个数组元素。
是否可以确定 realloc() 会做什么?如果是这样,是否有可能以跨平台的方式实现?