Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Liername
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
#1

Ссылка на указатель - C++

19.11.2013, 11:15. Просмотров 360. Ответов 3
Метки нет (Все метки)

Задам, скорее всего, глупый вопрос, однако хотелось бы разобраться.

C++
1
2
3
4
5
6
// ...
{
    int *ptr = new int;
    int &x = *ptr;
}
// ...
При выходе за пределы блока, освободится ли память, на которую указывает ptr, или нет?
Если ссылка - обычная переменная, просто расположенная в заранее определенным программистом месте, то после выхода за пределы блока, программа, по идее, должна сама автоматически освободить занимаемую ею память...
Подозреваю, что память все же не освобождается, но все таки хотелось бы знать точно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2013, 11:15     Ссылка на указатель
Посмотрите здесь:

C++ Ссылка на функцию класса (не указатель)
C++ Ссылка на указатель
C++ Ссылка на указатель
C++ Указатель и ссылка
C++ Ссылка на указатель в аргументе функции
C++ Указатель и ссылка
Что лучше ссылка или указатель? C++
Указатель и ссылка C++
Сколько памяти занимает указатель? Ссылка? C++
C++ Ссылка на указатель на указатель
C++ Указатель/ссылка в параметре функции
Ссылка(указатель) на вектор C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.11.2013, 11:22     Ссылка на указатель #2
Цитата Сообщение от Liername Посмотреть сообщение
Подозреваю, что память все же не освобождается, но все таки хотелось бы знать точно.
Память же в не в блоке была выделена, а совсем в другой области. А ссылка - вего лишь псевдоним. Удалится вместе с указателем при выходе из блока. Утечка памяти. И это не ссылка на указатель.
zss
Модератор
Эксперт С++
6187 / 5790 / 1875
Регистрация: 18.12.2011
Сообщений: 14,790
Завершенные тесты: 1
19.11.2013, 11:29     Ссылка на указатель #3
Для проверки попробуйте выполнить такую программку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
 struct X
 {
     X(){puts("constructor\n");}
     ~X(){puts("destructor\n");}
 };
int main ()
{
    {
        X *ptr = new X;
        X &x = *ptr;
    }
    _getch();
}
Увидите, что деструктор не вызывается.
SatanaXIII
Супер-модератор
Эксперт С++
5578 / 2612 / 239
Регистрация: 01.11.2011
Сообщений: 6,422
Завершенные тесты: 1
19.11.2013, 16:30     Ссылка на указатель #4
Liername, удалите у комнаты дверь, - удалится ли комната?
Yandex
Объявления
19.11.2013, 16:30     Ссылка на указатель
Ответ Создать тему
Опции темы

Текущее время: 03:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru