Могу ли я по-прежнему использовать контейнеры STL и заставлять их использовать предоставленную мной кучу?
Контейнеры STL принимают пользовательские распределители:
http://en.wikipedia.org/wiki/Allocator_(C%2B%2B)#Custom_allocators
Вот ветка со ссылками на примеры:
Неопровержимые примеры пользовательских распределителей C ++?
Это выгодно с точки зрения производительности ...?
Вы можете узнать это, написав свое приложение, предложив набор воспроизводимых тестовых сценариев и запустив свой код в профилировщике.Если вы считаете, что выделение памяти составляет значительную часть времени работы, тогда вам может быть полезна более эффективная стратегия выделения.
Если вы можете разбить вашу программу на функциональный уровень и получить реалистичнуюСценарии для каждого случая, вам не нужно, чтобы вся ваша программа работала для этого.Но помните, что время, потраченное на оптимизацию, - это время, которое можно потратить на тестирование или кодирование новых функций :) Делайте то, что нужно, и не более ...
Является ли использование распределения памяти в небольших классах достаточно большимне хотите ли беспокоиться об этом?
В зависимости от вашей программы, насколько вы чувствительны к большим затруднениям при распределении, как часто вы выделяете в циклах и т. д., это возможно.Профиль:)
При разработке приложения вы все равно можете быть чувствительными к выделению ресурсов - создавать переменные автоматического хранения (локальные стеки), когда можете, и динамически распределять только тогда, когда это необходимо.