Мое понимание всегда было, независимо от С++ или С# или Java, что, когда мы используем ключевое слово new для создания объекта, оно выделяет память в куче. Я думал, что new нужен только для ссылочных типов (классов), и что примитивные типы (int, bool, float и т.д.) Никогда не используют new и всегда идут в стек (кроме случаев, когда они являются переменной-членом класса, который создается с помощью new). Тем не менее, я читал информацию, что заставляет меня сомневаться в этом долговременном предположении, по крайней мере, для Java и С#.
Например, я только заметил, что в С# оператор new может использоваться для инициализации типа значения, см. здесь. Является ли это исключением из правила, вспомогательной особенностью языка, и если да, то какие другие исключения будут?
Кто-нибудь может прояснить это?
