Как работает delete[]?
Ответ на похожий вопрос тут
Я могу создать динамический массив
int *ptr = new int[20];
и после удалить его
delete [] ptr;
Но у меня тут встал вопрос, откуда delete[] знает размер массива? Раз он способен удалить весь массив только по указателю на его первый элемент, то могу ли я используя тот же трюк узнать размер абсолютно любого массива?
Ответы (1 шт):
Полный ответ есть тут. Если коротко, то можно узнать размер произвольного массива, но только в текущей реализации. В стандарте написано только, что new[] и delete[] должны создавать и удалять одинаковые участки памяти, а как это сделано - уже не их дело. Потому использовать эту "фичу" можно будет только на конкретной машине в конкретной реализации, что не советуется делать.