![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
rp80 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Копирование указателя на объект не приводит к копированию объекта.
Значит следующий код приведет к утечки памяти:
Правильно копировать так:
А что происходит при копировании переменных в стеке?
Теряется ли память выделенная первоначально под s? |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Но вопрос не в этом ) А в том, что хочется понять что конкретно происходит с памятью при копировании локальных переменных. при копировании переменных данные копируются. а тут ты просто манипулируешь указателями на область данных (ибо константы), так что копируются только значения самих указателей. |
|
|
rp80 |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
при копировании переменных данные копируются. а тут ты просто манипулируешь указателями на область данных (ибо константы), так что копируются только значения самих указателей. Ну вот так вроде понятнее стало. Но все же, чтобы до конца понять ответьте пожалуйста по пунктам. Допустим размер стека 0 байт.
В какое?
Что происходит с данными s? Как освобождается память занимаемая ими? И освобождается ли вообще?
Но данные остаются. т.е. память которую занимали данные на которые указывал s2 не освободилась при уничтожении s2.
Но уничтожаются ли тут данные, на которые указывала s? Ведь выше в аналогичном случае этого не произошло. Спасибо. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.6.2025, 1:24 |