Arhn - архитектура программирования

Можно ли размещать ссылочные типы в стеке?

Рассмотрим следующий код:

class Point
{
   public int position;
}

здесь позиция int будет размещена в куче, даже если это тип значения.

но мой вопрос касается противоположного сценария, рассмотрим следующий код:

struct Person
{
   public string name;
}

Будет ли имя строки размещено в куче или стеке?

TIA



Ответы:


1

Ссылочные типы. Фактический объект-экземпляр размещается в куче, а его ссылочная переменная, которая ссылается на него, размещается в стеке.

Просто головоломка: когда мы берем тип значения, приводим его к ссылочному типу, например, и объекту (все является объектом в .net) или интерфейсу (ссылочный тип), который он реализует, тогда значение Тип помещен в рамку, то есть копируется в кучу, и на него ссылаются из стека. Если мы приведем объект обратно к типу значения, он будет распакован обратно в тип значения и полностью скопирован в стек. Некоторые люди склонны ошибочно рассматривать этот сценарий как ссылочный тип, размещенный в куче.

12.02.2015

2

Нет. Ссылка на строку будет размещена там, где когда-либо был назначен Person. Сама строка будет размещена в куче. Фактически каждый раз, когда вы говорите new T, где T - это класс, объект будет размещен в куче.

18.08.2014
  • Вы имеете в виду, что во втором примере, если бы Person был классом, будет ли ссылка на строковые и строковые данные размещаться в куче? 18.08.2014
  • No Person не является структурой. Дело в том, что структуры не всегда размещаются в стеке. Они выделяются встроенными, где бы они ни использовались, например, в классе, стеке или другой структуре. 18.08.2014
  • Я нарисовал изображение, чтобы рассказать вам то, что я понял до сих пор. pixentral.com/pics/1lgTw2M0rd68InSHj0ILKa1Cy1vYx 18.08.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..