Как работает delete[]?

Ответ на похожий вопрос тут

Я могу создать динамический массив

int *ptr = new int[20];

и после удалить его

delete [] ptr;

Но у меня тут встал вопрос, откуда delete[] знает размер массива? Раз он способен удалить весь массив только по указателю на его первый элемент, то могу ли я используя тот же трюк узнать размер абсолютно любого массива?


Ответы (1 шт):

Автор решения: Влад Бочкарёв

Полный ответ есть тут. Если коротко, то можно узнать размер произвольного массива, но только в текущей реализации. В стандарте написано только, что new[] и delete[] должны создавать и удалять одинаковые участки памяти, а как это сделано - уже не их дело. Потому использовать эту "фичу" можно будет только на конкретной машине в конкретной реализации, что не советуется делать.

→ Ссылка