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