Я знаю, что вопросы о стеке и куче задавались несколько раз, но меня смущает один небольшой аспект выбора того, как объявлять объекты в C ++.
Я понимаю, что куча, доступ к которой осуществляется с помощью оператора «новый», используется для динамического распределения памяти. Согласно ответу на другой вопрос о переполнении стека, «куча предназначена для хранения данных, время жизни которых не может быть определено заранее». Стек быстрее, чем куча, и, похоже, используется для переменных локальной области видимости, т.е. переменные автоматически удаляются, когда соответствующий раздел кода завершается. Стек также имеет относительно ограниченный объем доступного пространства.
В моем случае до времени выполнения я знал, что мне понадобится массив указателей ровно на 500 объектов определенного класса, и я знаю, что мне нужно будет хранить указатели и объекты на протяжении всего времени выполнения. Куча не имеет смысла, потому что я заранее знаю, как долго мне понадобится память, и я точно знаю, какие объекты man мне понадобятся. Стек также не имеет смысла, если он ограничен по объему; плюс, я не знаю, действительно ли он может содержать все мои объекты / указатели.
Как лучше всего подойти к этой ситуации и почему? Спасибо!