В настоящее время я работаю с библиотекой, которая потенциально создает объекты с тяжелым весом. В частности, я создаю объекты, связанные с волновыми файлами.Как определить, был ли объект создан в основном из стека или динамической памяти
Теперь, создавая экземпляр объекта Wave (как пример), есть ли хороший способ определить, где он выделяется в памяти?
Например, если я должен был создать экземпляр std :: vector в стеке, я знаю, что в стеке выделена некоторая память (т. Е. Информация заголовка), и фактические данные контейнера создаются в куче. Поэтому, по большей части, мне не нужно беспокоиться о переполнении памяти стека. Хотя у меня все еще есть возможность полностью создать объект в куче.
Но скажем, я не знаю об объектах реализации. Допустим, я использую библиотеку, которая создает массив массива в стеке. Это может вызвать проблемы.
Итак, мой вопрос: как мы знаем, как «тяжелый» объект является памятью мудрым?
Короткий ответ: вы не можете. По крайней мере, если вы не используете фабричную часть, которая всегда создает объекты в куче. В этом случае ответ всегда «куча», конечно. –