Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где хранится переменная? в куче или в стеке? 
V
    Опции темы
HMLd
Дата 26.7.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 27.6.2006
Где: Polska

Репутация: нет
Всего: 0



Здраствуйте. Всегда писал на Си++, теперь при изучении шарпа возник вопрос. Если есть переменная типа-значения (value-type), например:
Код

int a;

то она хранится в стеке. А если написать 
Код

int a = new int();

то будет ли она храниться в стеке или в куче?
И то же самое насчёт ref-type. Если у меня есть объект класса, то в чём разница между SomeClass obj и SomeClass obj = new SomeClass?
Путаюсь, потому что в плюсах при использовании new память выделялась в куче. Насколько я понимаю, здесь не так.
Спасибо.
PM MAIL   Вверх
Gluttton
Дата 26.7.2011, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



1. Типы-значения могут храниться как в стеке так и в куче (упаковка-распаковка): MSDN .
2. Ссылочные типы, на сколько я понимаю, храняться только в куче.


--------------------
Слава Україні!
PM MAIL   Вверх
HMLd
Дата 26.7.2011, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 27.6.2006
Где: Polska

Репутация: нет
Всего: 0



Gluttton, ок, а где хранится int a = new int(); ?
PM MAIL   Вверх
Экскалупатор
Дата 26.7.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



HMLd
Код

int a;
int a = new int();

записи идентичны.
все будет зависеть от того где находится переменная. т.е. если это поле класса то весь класс лежит в управляемой куче.
PM MAIL ICQ   Вверх
CYBERDREAM
Дата 27.7.2011, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 8
Всего: 28



Код

int a;
int a = new int();

оператор new не является показателем ссылочного типа. Это вызов конструктора.
так что переменная а и там и там является структурой типа int


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
HMLd
Дата 27.7.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 27.6.2006
Где: Polska

Репутация: нет
Всего: 0



Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.