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
- может. Именно сам достаточно длительный с точки зрения процессорного времени процесс выделения и освобождения.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне необходимо чтобы виджет занимал минимально возможное пространство, но с учетом того, что он не может быть меньше, чем его содержимоеЕго...
Когда я создаю char name[] = "John" и пытаюсь разыменовать *name то получаю JЭто значит name сам по себе это адрес? Если да, то адрес чего? Насколько я знаю,...
Давно мучаюсь вопросом есть ли различия между командами меньше и меньше или равно на низком уровне в плане количества команд и производительности?