Можно ли частично освободить память?

В C (или C ++) мне интересно, можно ли частично освободить блок памяти.

Например, предположим, что мы создаем массив целых чисел a размером 100,

int * a = malloc(sizeof(int)*100);

, а затем мы хотим изменить размер a так, чтобы он содержал 20 целых чисел, а не 100.

Есть ли там. способ освободить только последние 80 * sizeof (int) байт из a ? Например, если мы вызовем realloc, будет ли это автоматически?

  • Я ищу решение, которое не требует перемещения / копирования первых 20 int.
  • В качестве альтернативы, можете ли вы объяснить, почему это было бы плохо если это было возможно, или почему возможность сделать это не была включена ни в одном из языков?
7
задан Cam 15 December 2010 в 07:09
поделиться