Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
1

Несколько моментов про хранение в куче и в стеке

21.08.2014, 23:52. Показов 3737. Ответов 1
Метки нет (Все метки)

Хотел уточнить несколько моментов про хранение в куче и в стеке:
1) Ссылочные типы всегда хранятся в куче?
2) Типы значений всегда хранятся в стеке?
3) Если в типе значений (например, структура) в качестве поля используется переменная ссылочного типа
(например, класс), то экземпляр структуры сохраняется в стеке? Или он будет разбросан по куче и стеку?
4) Если в классе (ссылочный типы) используется в качестве поля тип значений, то объект полностью хранится в
куче? Или он будет разбросан по куче и по стеку?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2014, 23:52
Ответы с готовыми решениями:

Поясните, пожалуйста, несколько моментов про выделение памяти
Ребят объясните: int* a; a = new a(1); в первой строке указатель ссылается на какуюто память,...

Расположение данных в стеке и в куче
Друзья, возник вопрос. Следующий код char length_buffer; ...заполнение length_buffer двоичным...

Создание массивов в стеке и куче
"Напишите небольшую программу,которая создаёт массивы в стеке(массивы фиксированного размера) и...

Интерфейс хранится в стеке или в куче?
интерфейс хранится в стеке или в куче?

1
Эксперт .NET
15562 / 11810 / 3099
Регистрация: 17.09.2011
Сообщений: 19,725
22.08.2014, 04:19 2
Цитата Сообщение от pavel911 Посмотреть сообщение
1) Ссылочные типы всегда хранятся в куче?
Да

Цитата Сообщение от pavel911 Посмотреть сообщение
2) Типы значений всегда хранятся в стеке?
Нет

Цитата Сообщение от pavel911 Посмотреть сообщение
3) Если в типе значений (например, структура) в качестве поля используется переменная ссылочного типа
(например, класс), то экземпляр структуры сохраняется в стеке? Или он будет разбросан по куче и стеку?
"Переменная ссылочного типа" — это ссылка на объект, а не весь объект.
Потому ссылка будет храниться вместе со структурой в стеке или в куче, а объект, на который она ссылается — в куче.

Цитата Сообщение от pavel911 Посмотреть сообщение
4) Если в классе (ссылочный типы) используется в качестве поля тип значений, то объект полностью хранится в
куче? Или он будет разбросан по куче и по стеку?
Поле-значение будет в куче, как часть памяти, занимаемой объектом.

Теперь очень большая оговорка:
Все вышеперечисленное относится к рантайму и компилятору, реализованным майкрософтом. Сам стандарт языка C# никак не оговаривает, где и что должно храниться, потому фактическое место хранения объектов и структур является деталью реализации конкретного компилятора и рантайма и не является чем-то универсальным.
Можете сделать свой рантайм для шарпа вообще без стека и это не будет нарушением никаких спецификаций.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2014, 04:19

Создание QApplication на стеке или в куче
Только начал разбираться с QT и появилось неск. глупых вопросов: - Какая разница между ...

Как происходит процесс выделения памяти в стеке и куче
#include <stdio.h> #include <conio.h> #include <windows.h> #include "disc.h" void main() { ...

Переменные созданные в функции создаются в стеке или в куче ?
Здравствуйте, Подскажите пожалуйста: void foo(int a) { vector <int> vector_a; ...

Проверить где находится элемент: в стеке или в куче?
можно как-то проверить элемент находится в стеке или в куче? int i = 4; object o = i; вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru