В C (или C ++) мне интересно, возможно ли частично освободить блок памяти.
Например, предположим, что мы создаем массив целых чисел a
размером 100,
int * a = malloc(sizeof(int)*100);
, а затем мы хотим изменить размер a
, чтобы оно содержало 20 дюймов, а не 100.
Есть ли способ освободить только последние 80 * sizeof (int) байтов a
? Например, если мы вызовем realloc, он будет делать это автоматически?
- Я ищу решение, которое не требует перемещения / копирования первых 20 дюймов.
- В качестве альтернативы, вы можете объяснить, почему было бы плохо, если бы это было возможно, или почему способность сделать это не была включена ни в один из языков?