Опытный пользователь C++ сказал мне, что я должен стремиться использовать переменные кучи, т.е.:
A* obj = new A("A");
в отличие от:
A obj("A");
Помимо всего того, что использование указателей удобно и гибко, он сказал, что лучше помещать вещи в кучу, а не в стек (что-то о том, что стек меньше, чем куча?). Это правда? Если да, то почему?
NB: Я знаю о проблемах со сроком службы. Предположим, я правильно управляю временем жизни этих переменных. (т. е. единственный критерий беспокойства - это хранилище кучи и стека без проблем со сроком службы)
new
находится в куче; другой находится в стеке. Вы начинаете с того, что говорите, что ваш друг рекомендовал переменные стека; тогда вы говорите, что он сказал, что лучше складывать вещи в кучу. Это сбивает нас с толку. Не могли бы вы уточнить, какой совет, по вашему мнению, вам действительно давали? - person Jonathan Leffler   schedule 02.06.2012new
d объект находится в куче (технически имеет длительность динамического хранения). Это не переменная, поскольку с этим объектом не связано имя; единственная переменная, объявленная вA* obj = new A("A");
, этоobj
, которая находится в стеке (технически имеет длительность автоматического хранения), но является указателем. - person CB Bailey   schedule 02.06.2012