【发布时间】:2020-03-08 06:14:46
【问题描述】:
有什么方法可以释放你使用 malloc() 创建的部分内存;
假设我有这个:
int *temp;
temp = ( int *) malloc ( 10 * sizeof(int));
free(temp);
free 将释放所有 20 字节的内存,但假设我只需要 10 字节。我可以释放前 10 个字节并保存索引吗?所以第一个分配值的索引是 temp[10]。
【问题讨论】:
-
不,你不能这样做。但是您可以使用
realloc,这与您要求的不太一样。 -
您首先必须将数据从上部移动到下部,但您不能拥有第一个索引为
temp[10]的数组。数据将从temp[0]替换。
标签: c memory-management malloc realloc memmove