Распределяет ли использование "new" в структуре ее в куче или стеке?
Память, содержащая поля структуры, может .cs-file быть выделена либо в стеке, либо memory-usage в куче, в зависимости от memory-allocation обстоятельств. Если переменная .cs-file типа структуры является локальной .net переменной или параметром, не memory-usage захваченным каким-либо анонимным c#.net делегатом или классом итератора, она c# будет размещена в стеке. Если c# переменная является частью dot-net какого-либо класса, она будет memory-deallocation размещена внутри класса в .net куче.
Если структура размещена c#.net в куче, вызов оператора new c#-language на самом деле не требуется .cs-file для выделения памяти. Единственная memory-management цель - установить значения c#-language полей в соответствии с тем, что dotnet находится в конструкторе. Если .net конструктор не вызывается, все memory-deallocation поля получат значения по .net-framework умолчанию (0 или null).
Аналогично csharp для структур, размещенных .cs-file в стеке, за исключением того, что dotnet C# требует, чтобы все локальные dotnet переменные были установлены .net-framework на некоторое значение перед .net-framework их использованием, поэтому dot-net вам нужно вызвать либо пользовательский memory-management конструктор, либо конструктор memory-usage по умолчанию (конструктор, который c#-language не принимает параметров, всегда c# доступен для структур).
c#
.net
memory-management
Распределяет ли использование "new" в структуре ее в куче или стеке?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.