Распределяет ли использование "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

2022-10-12T05:41:23+00:00
Вопросы с похожей тематикой, как у вопроса:

Распределяет ли использование "new" в структуре ее в куче или стеке?