![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
haiflive |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Прошу разъяснить мне давно волнующую меня тему..
Вопрос про оператор new, в чём разница между этими двумя функциями?. какой вариант предпочтительней и почему?. Функция 1:
Функция 2:
Я конечно понимаю, что выделение памяти произодёт в первом варианте в момент создания обекта, а во втором в момент обращения к функции.. А ни всё ли равно?. ну конечно если мы там внутри функции будем работать с "большим обектом", то его возможно потребуется удалить(и создать и удалить), НО рассматривается тот случай, когда создаётся объект в начале функции и удаляется только в конце.. Насчёт скорости ничего сказать не могу.. Насчёт ошибок, второй вариант предпочтительней так как по объёму написанного кода меньше, и не надо думать о том, что бы удалять обект. Почему я сплошь и рядом наблюдаю первый вариант?. это что такая привычка, или есть скрытый смысл?. |
|
|
![]() |
haiflive |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Вот нагуглил такое правило, думаю его и буду придерживаться:
Цитата для локальных данных функции лучше подходит стэк для всего остального куча. Если объем данных превышает некое пороговое значение (начиная с 4КБ) или размер данных динамический то можно начинать думать о размешении их в куче. Вот уж не думал, что затронул священную войну про то, где размещать переменные в стеке или в куче, оказалось и ссылочные типы и.. как их там.. "простые" могу рамещаться, как в стеке так и в куче, это решает операционная система и компилятор по каким-то "магическим" правилам.. Ну я для себя решил, сандартные типы в стек однозначно, пользователские типы.. тут надо думать в каждом случае отдельно, чаще думаю будет куча, в зависемости от размера объекта.. Всем спасибо за ответы. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 27.6.2025, 8:31 |