Память выделена для создания объекта внутри функции? - PullRequest
0 голосов
/ 20 мая 2018

Как объекты создаются из одного класса.Каждый объект содержит переменную, определенную в классе, кроме тех, которые определены в методах этого класса.Переменные в функциях одного и того же объекта являются разделяемой памятью, верно?Если у нас есть функция, в которой мы создаем объект того же класса, где будет находиться ссылка?Разве эта ссылка тоже не передается?

1 Ответ

0 голосов
/ 20 мая 2018

Методы ничем не отличаются от любой другой функции в отношении использования памяти: локальные переменные создаются, когда выполнение достигает своего объявления, и (если static) они не уничтожаются, а их память восстанавливается, когда выполнение покидаетзаблокировать его .(Это происходит, самое позднее, когда функция возвращается.) Нет связи с объектом this или любым его членом.Также переменная, имеющая тот же тип, что и класс метода, не имеет никакого значения.

В некотором смысле это делает память «разделяемой»: она будет быстро восстановлена ​​и (как правило) повторно использована.Но в этом нет ничего особенного, и не думайте, что это означает больше, чем это: если метод рекурсивен или вызывается одновременно более чем одним потоком, у каждой копии есть свои собственные локальные объекты - опять же, как и у любой другой функции.

Наконец, любая функция или метод могут динамически распределять память;время жизни и совместное использование выделенного объекта могут быть не связаны с переменным , используемой для ссылки на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...