Использование кучи

260
14 июня 2018, 13:30

Имеется такой код

int main(){
    int* p = new int[2];
    delete p;
    return 0; 
}

Я решил просмотреть его через valgrind. Собственно результаты такие

==3147== HEAP SUMMARY:
==3147==     in use at exit: 72,704 bytes in 1 blocks
==3147==   total heap usage: 2 allocs, 1 frees, 72,712 bytes allocated
==3147== 
==3147== LEAK SUMMARY:
==3147==    definitely lost: 0 bytes in 0 blocks
==3147==    indirectly lost: 0 bytes in 0 blocks
==3147==      possibly lost: 0 bytes in 0 blocks
==3147==    still reachable: 72,704 bytes in 1 blocks
==3147==         suppressed: 0 bytes in 0 blocks

Есть несколько вопросов

  1. Откуда появилось аж целых 2!!! запроса в кучу. Сколько всего читал, обсуждался один сискол на один нью, а тут два.
  2. Почему такой объем памяти в размере 72 704 байта? Получается такой объем памяти завис в куче и всего своим делетом я освободил 74 712 - 72704 = 8 байт (у меня инт 4 байта...откуда 8 байт освобожденных, не могу понять (это размер указателя в моей архитектуре))

p.s. the value of the "allocs" doesn't depend on parameter in [ ]. I've changed it on 20 elements, and allocs are still 2

READ ALSO
Функция equal_range и лямбда выражения

Функция equal_range и лямбда выражения

Есть необходимость найти в массиве строк диапазон строк, которые начинаются на определенную буквуТак как по умолчанию string и char не сравниваются,...

219
Ценность дампов памяти

Ценность дампов памяти

Есть много утилит для всяких исследований кодаПрочитал несколько мнений на счёт того что выявление бага кода лучше делать через такие инструменты

224
Замена символов в строке(c++)

Замена символов в строке(c++)

Код который должен заменять символы, но он выдает ошибку

631