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

90
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 не сравниваются,...

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

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

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

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

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

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

36