0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 2
|
||||||
1 | ||||||
Правила размещения объектов в памяти25.02.2015, 16:18. Показов 875. Ответов 5
Метки нет (Все метки)
Привет всем! Подскажите пожалуйста, искал по форуму поиском ответ, но не нашел.
Имеем такой код:
Переменная s метода exchange будет создана в стеке и разрушится автоматически при выходе из метода? Обязательно ли при выходе освобождать память занятую объектом b, ведь при завершении процесса ОС автоматически освобождает всю доступную процессу память?
0
|
25.02.2015, 16:18 | |
Ответы с готовыми решениями:
5
Вывести все возможные комбинации размещения 6 объектов Какая схема размещения массивов в памяти? Функция размещения переменных в динамической памяти! Объясните правила работы с delete с указателями и массивами (корректное освобождение выделенной памяти) |
7801 / 6566 / 2986
Регистрация: 14.04.2014
Сообщений: 28,709
|
|
25.02.2015, 16:26 | 2 |
A будет в стеке и s там же.
На каждый new должен быть свой delete.
0
|
18948 / 9896 / 2420
Регистрация: 30.01.2014
Сообщений: 17,380
|
|
25.02.2015, 16:38 | 3 |
Дело не в памяти, а в ресурсах, которые могут быть выделены в классе. Деструктор не вызвался, сокет, например, не закрылся, порт висит занятый, пока система по таймауту его не прибьет. Ну и гарантии, что система там что-то прибьет, в общем случае нет. Этот путь только для тех, кто хочет писать некорректные программы
Объект А не "внутри" объекта B. Он внутри конструктора (функции), следовательно разместится в стеке. Вот если бы он был членом класса, т.е. фактически находился бы внутри объекта B, то его storage duration была бы такой же, как у объемлющего объекта. Да, в стеке (тоже самое что в примере с конструктором). Да, "разрушится", но на самом деле в данном случае значение останется там же где и было, пока его не перезатрут. Размещение на стеке оттого и быстрое такое, что только указатель стека изменяется на нужный размер.
2
|
35 / 35 / 15
Регистрация: 28.07.2011
Сообщений: 64
|
|
25.02.2015, 17:03 | 4 |
ОС освободит. В данном конкретном случае это не проблема. Но подобные практики - путь к утечкам. Особенно, если кто-то будет использовать ваш код кроме вас не разобравшись до конца что он не освобождает память. В цикле. И для демона, который работает на сервере 24/7. При работе в команде такое бывает и по этому иногда лучше быть догматичным до мозга костей.
0
|
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 2
|
||||||
26.02.2015, 13:35 [ТС] | 5 | |||||
Так:
0
|
18948 / 9896 / 2420
Регистрация: 30.01.2014
Сообщений: 17,380
|
|
26.02.2015, 14:15 | 6 |
Если сам объект типа B будет в куче, то и объекта а (как собственно x и y) внутри него тоже.
1
|
26.02.2015, 14:15 | |
26.02.2015, 14:15 | |
Помогаю со студенческими работами здесь
6
Выделение памяти под массив объектов Освобождение памяти динамически созданных объектов Создание объектов в заранее выделенной памяти Размещение объектов в заданных блоках памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |