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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
#1

Почему локальная переменная не уничтожается после выхода из функции - C++

13.07.2012, 15:26. Просмотров 1679. Ответов 21
Метки нет (Все метки)

В функции создается строка char *pn = new char[ strlen(temp) + 1 ];. Мне непонятно почему при выходе из функции эта строка доступна в main()? Почему эта строка не удаляется после выхода из функции?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char *getName(void)
{
    char temp[80];
    
    cout << "Enter last name: ";
    cin >> temp;
 
    char *pn = new char[ strlen(temp) + 1 ];
    strcpy(pn, temp);
 
    return pn;
}
 
int main()
{
   char *name;
 
   name = getName();
}
Объясните, пожалуйста, что вообще там происходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2012, 15:26     Почему локальная переменная не уничтожается после выхода из функции
Посмотрите здесь:

C++ Статическая локальная переменная
Локальная переменная C++
Почему в выводе выдаются предупреждения "warning C4101: sm: неиспользованная локальная переменная" C++
C++ Локальная переменная масив не создаеться в вызваной функции
C++ Уничтожается переменная по выходу из функции. так не должно быть
C++ После выхода из функции, чтобы матрица не изменялась
C++ Почему переменная "d" не была удалена из стека после выхода из функции?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kent
Нуб со стажем
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
13.07.2012, 19:18     Почему локальная переменная не уничтожается после выхода из функции #21
Цитата Сообщение от alsav22 Посмотреть сообщение
или использовать классы с автоматическим управлением памятью, которые сами за этим следят
например "Умный указатель" auto_ptr
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2012, 19:25     Почему локальная переменная не уничтожается после выхода из функции
Еще ссылки по теме:

C++ Почему выводит ошибку C4700, что локальная переменная неинициализированна, если она инициализированна
Локальная переменная внутри статической функции C++
C++ Неинициализированная локальная переменная
Предотвращение продолжения работы потока после выхода из функции C++
Почему указатель теряет свои значения после выхода с метода, память выделена динамически C++

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

Или воспользуйтесь поиском по форуму:
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
13.07.2012, 19:25     Почему локальная переменная не уничтожается после выхода из функции #22
kent, стринг лучше
Yandex
Объявления
13.07.2012, 19:25     Почему локальная переменная не уничтожается после выхода из функции
Ответ Создать тему
Опции темы

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