int main()
{
int *ptr = new int(5);
delete ptr;
// ptr становится висячим указателем.
std::cout << sizeof(ptr);
// у меня выводит 4 байта.
//
... какие-то действия в коде
//
}
я обьявляю указатель, который занимает 4 байта у меня в памяти, удаляю его где нибудь в начале тела ( насколько я знаю, delete всего лишь освобождает память, в которой находился указатель ), что происходит с самим указателем ? Почему он до сих пор занимает какую-то память? Это же ведь может влиять на скорость моей программы если я создам сотню указателей, удалю их, а они все равно будут занимать какое - то место.
Вы неправы.
delete ptr;
освобождает память, на которую указывает ptr, но никак не место, занимаемое переменной ptr.
sizeof(ptr) говорит только о том, сколько места в памяти занимает переменная, и никак не зависит от ее значения.
На скорость программы даже сотня указателей как-то вряд ли повлияет, а вот выделение/освобождение через new/delete - может. Именно сам достаточно длительный с точки зрения процессорного времени процесс выделения и освобождения.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости