Знаешь же как создается динамический массив?
Ты говоришь, алокатор, выдели мне памяти вот на десять ячеек.
Он тебе говорит, окей. Выделил, вот тебе указатель на начало.
Когда тебе понадобится очистить память, ты мне дашь этот указатель и скажешь очистить и я тебе очищу всю эту память.
Поэтому удалить ты можешь ТОЛЬКО то, что тебе дали через new. Если ты попробуешь удалить что-то со стэка, или через адресную арифметику - ты получишь undefined behaviour.
Через munmap же можна частково звільняти сторінки (тобто ptr повинен бути кратним)