Ant*_*Ant 6 c memory-management
据我了解,当被要求保留更大的内存块时,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
增长当前块是一个非常便宜的操作,所以这是我想利用的行为.但是,如果我正在重新分配内存,因为我想(例如)在现有字符串的开头插入一个char,我不希望realloc()复制内存.我最终会用realloc()复制整个字符串,然后再次手动复制它以释放第一个数组元素.
是否可以确定realloc()将执行哪些操作?如果是这样,是否有可能以跨平台的方式实现?
realloc()的行为可能取决于其具体实施.并且基于此代码将是一个可怕的黑客,至少可以说,违反了封装.
针对您的具体示例的更好解决方案是:
malloc()),大于前一个缓冲区| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |