Почему типы значений создаются в стеке, а ссылочные типы создаются в куче? - PullRequest
4 голосов
/ 28 марта 2012

Книги по программированию обычно объясняют, что типы значений создаются в стеке, а ссылочные типы создаются в куче.

Мой вопрос: почему.

Ответы [ 2 ]

11 голосов
/ 28 марта 2012

У меня вопрос почему.

Почему они это "объясняют"? Потому что иногда авторы сами не знают ничего лучшего, а иногда лень, чтобы объяснить это правильно. Правда все сложнее.

К счастью, Эрик Липперт много писал об этом:

Хотя я обычно старался бы хотя бы включить здесь перефразировку полного ответа, я не буду здесь это делать - потому что объяснение этого очень кратко почти неизбежно приведет к вводящему в заблуждение результату. Просто зайди и прочитай эти посты в блоге - а потом все остальное, что написал Эрик. Это займет недели, но вы будете рады, что сделали.

1 голос
/ 30 марта 2012

Почему авторы книг так пишут?

1.Они не читали Эрик Липперт Достаточно.

2. Возможно, они не утверждают о компиляторе C # / Java, и они могут думать о каком-то другом волшебном языке.

3. Они (авторы) читают то же самое из некоторых других книг (так что теперь оно в цикле)

4. [IMP] Очень легко запомнить (хотя это бесполезно) в 1 строке, а не в высказываниях Эрика Липперта.

5.Многие программисты (как и я) просто читают, для них в действительности не имеет значения, что происходит в оперативной памяти. Они хотят, чтобы результат отображался на экране (мониторе). Они хотят запомнить эти факты (в зависимости от того, что проще и ближе к реальности) с целью проведения собеседования.

6. Большинство собеседников в современной индустрии программного обеспечения не похожи на Эрика Липперта. Так что даже они не знают в реальности. Так что помнить ложное будет полезно.

...