|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
||||||
Почему локальная переменная не уничтожается после выхода из функции13.07.2012, 15:26. Показов 9843. Ответов 21
Метки нет (Все метки)
В функции создается строка char *pn = new char[ strlen(temp) + 1 ];. Мне непонятно почему при выходе из функции эта строка доступна в main()? Почему эта строка не удаляется после выхода из функции?
0
|
||||||
| 13.07.2012, 15:26 | |
|
Ответы с готовыми решениями:
21
Почему переменная "d" не была удалена из стека после выхода из функции? Уничтожается переменная по выходу из функции. так не должно быть
|
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
||
| 13.07.2012, 15:41 [ТС] | ||
|
В pn копируется строка temp и она не удаляется?
0
|
||
|
Супер-модератор
|
||
| 13.07.2012, 15:54 | ||
|
Локальные переменные создаются в стеке и освобождаются после выхода из функции. Переменные, создаваемые оператором new, "живут" не в стеке, а в куче. Куча глобальна. Поэтому указатель на массив из кучи можно вернуть из функции (оператором return) и использовать в другой функции.
Добавлено через 3 минуты
1
|
||
|
|
||||||
| 13.07.2012, 15:55 | ||||||
|
Память под строку выделяется в куче, совместно используемой всеми функциями. Такая память не освобождается по завершению функции, для этого надо вызывать delete.
А сам по себе указатель pn - локальная переменная, содержащий адрес первого элемента этой строки. return pn - просто возвращает значение этого адреса. Как в случае
1
|
||||||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 13.07.2012, 16:07 | ||
|
1
|
||
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
||
| 13.07.2012, 16:43 [ТС] | ||
|
Спасибо всем что объяснили
Вроде немного стало понятно. А то вот читаю книгу и главное никак не могу разобраться с этой задачей.Добавлено через 36 минут
0
|
||
|
Нуб со стажем
36 / 34 / 10
Регистрация: 19.02.2012
Сообщений: 118
|
|
| 13.07.2012, 16:52 | |
|
1
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||
| 13.07.2012, 17:18 | ||||||||
1
|
||||||||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||||
| 13.07.2012, 17:30 | ||||||||
Добавлено через 9 минут
0
|
||||||||
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
|||||||
| 13.07.2012, 17:30 [ТС] | |||||||
Правда другим способом.
0
|
|||||||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
| 13.07.2012, 17:40 | ||||||
|
Intel~lect,
после оперетора return функция завершает свою работу
0
|
||||||
|
Супер-модератор
|
|
| 13.07.2012, 17:57 | |
|
Я действительно не вполне удачно выразился. Указатель pn - локальная переменная. Длиной в 4 байта. Содержит адрес, указывающий в кучу. Этот адрес возвращается в вызывающую программу. Переменная pn (4 байта в стеке) уничтожается при выходе из функции.
1
|
|
|
|
||
| 13.07.2012, 18:20 | ||
|
Но сама строка, динамически размещённая в куче, доступна из других функций.
0
|
||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 13.07.2012, 18:27 | |
|
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
| 13.07.2012, 18:28 | |
|
0
|
|
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
||
| 13.07.2012, 18:33 [ТС] | ||
|
Да и забыть также можно про освобождение памяти.
0
|
||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
| 13.07.2012, 18:34 | |
|
Schizorb, Ага, тогда понятно
0
|
|
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||
| 13.07.2012, 18:40 | |||
|
Добавлено через 2 минуты
1
|
|||
| 13.07.2012, 18:40 | |
|
Помогаю со студенческими работами здесь
20
Локальная переменная масив не создаеться в вызваной функции
Переменная запоминающаяся после выхода из программы Почему в выводе выдаются предупреждения "warning C4101: sm: неиспользованная локальная переменная" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|