Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
10 / 10 / 13
Регистрация: 27.09.2016
Сообщений: 248
1

Проверить где находится элемент: в стеке или в куче?

10.06.2018, 14:00. Показов 1545. Ответов 5
Метки нет (Все метки)

можно как-то проверить элемент находится в стеке или в куче?
C#
1
2
int i = 4;
object o = i;
вот тут мне не понятно, 'O' указывает на элемент в стеке или создает копию в куче?
ну или так
C#
1
2
interface IInterface { }
struct S : IInterface { }
C#
1
2
S s = new S();
IInterface i = s;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2018, 14:00
Ответы с готовыми решениями:

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

Если для структуры используется оператор new, то память выделяется в куче или на стеке?
Если для структуры используется оператор new, например, так: struct SomeStruct { }

Где структуры размещают данные: в стэке или в куче
Это из спецификации: Struct constructors are invoked with the new operator, but that does not...

Несколько моментов про хранение в куче и в стеке
Хотел уточнить несколько моментов про хранение в куче и в стеке: 1) Ссылочные типы всегда...

5
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
10.06.2018, 14:37 2
Лучший ответ Сообщение было отмечено GERALD2799 как решение

Решение

Цитата Сообщение от GERALD2799 Посмотреть сообщение
вот тут мне не понятно, 'O' указывает на элемент в стеке или создает копию в куче?
в куче
Цитата Сообщение от GERALD2799 Посмотреть сообщение
ну или так
аналогично
читаем про boxing/unboxing
1
Эксперт .NET
15449 / 11712 / 3076
Регистрация: 17.09.2011
Сообщений: 19,603
10.06.2018, 14:54 3
Цитата Сообщение от GERALD2799 Посмотреть сообщение
можно как-то проверить элемент находится в стеке или в куче?
Глядя только на код — можно не более чем догадываться, т.к. неизвестно на каком компиляторе этот код будет откомпилирован и следовательно неизвестно где будет располагаться экземпляр, т.к. место его хранения отдано на усмотрение компилятору.
1
962 / 719 / 232
Регистрация: 30.04.2009
Сообщений: 2,984
10.06.2018, 15:35 4
Цитата Сообщение от GERALD2799 Посмотреть сообщение
можно как-то проверить элемент находится в стеке или в куче?
В книжке почитать про boxing/unboxing, а потом код посмотреть и сделать вывод.
0
10 / 10 / 13
Регистрация: 27.09.2016
Сообщений: 248
10.06.2018, 15:38  [ТС] 5
nicolas2008, ну да, но я хочу узнать программным способом. например через рефлексию
0
Эксперт .NET
15449 / 11712 / 3076
Регистрация: 17.09.2011
Сообщений: 19,603
10.06.2018, 16:15 6
Цитата Сообщение от GERALD2799 Посмотреть сообщение
я хочу узнать программным способом.
А тут уже будет как в квантовой механике: попытка достучаться до объекта может повлиять на место его хранения.
Например, переменные размером 32 бита или меньше (64 бита или меньше на x64) могут в целях оптимизации вообще не храниться в памяти, а сразу писаться в регистр процессора.
Однако если вы попробуете программно получить адрес такой переменной, то это будет замечено компилятором и он сгенерирует другой код: такой, где эта переменная находится в памяти, а уже не в регистре. Ну, чтобы вернуть вам ее адрес.
То же самое со стеком/кучей: использование экземпляра может повлиять на его место хранения.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2018, 16:15

Как называется этот элемент управления и где он находится?
как называется этот элемент управления и где он находится? В Paint-е когда создаешь фигуру она...

Найти наименьший элемент матрицы и записать нули в ту строку и столбец, где он находится
Помогите написать код Найти наименьший элемент матрицы X (m x n) и записать нули в ту строку и...

Найти наибольший элемент матрицы и записать нули в ту строку и столбец, где он находится
Найти наибольший элемент матрицы A(10,10) и записать нули в ту строку и столбец, где он находится....

Не могу понять где объект в куче или в стеке !
Сразу к примеру: class Zombie; { Soldat soldat; // что солдат внутри зомби делает не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.