C ++ не диктует использование кучи, тем более использование вторичной кучи. Это детали реализации, которые оставляются на усмотрение каждого компилятора. Что касается языка, переменные могут иметь динамическую продолжительность хранения , но в стандарте не говорится, как это достигается.
На практике все известные мне компиляторы используют кучупамять для динамических распределений. Теоретически, каждый метод выделения (new
против malloc
) может иметь свою собственную кучу, но нет особых причин усложнять управление памятью, вводя больше куч, чем необходимо. Кроме того, вы не должны смешивать методы распределения. Преимущества использования нескольких куч зависят от ручной настройки, которая в настоящее время находится за пределами возможностей компиляторов. (Программист может реализовать несколько куч, но это не то же самое, что «запуск» нескольких куч.)
Пространства имен и имена объектов являются несвязанными темами, так как они не существуют в исполняемом файле (если не сохранены как примечаниядля отладчика).