Examp ex = new Examp ();
Неверный код, надо Examp* ex = new Examp;
В случае статического определения (Examp ex2;
) — в той памяти, где обычно располагаются объекты. То есть:
• Если это поле объекта — то в теле объекта, которое может быть где угодно (куча, сегмент данных, стек).
• Если static/глобальный — то в сегменте данных.
• Если локальный — в стеке. Конкретно тут локальная переменная, и она будет в стеке.
В случае динамического определения (Examp* ex = new Examp;
) — в «куче».
В этом примере, кроме операции new, которая заводит объект в куче, видим ещё и указатель, который располагается «там, где обычно» — в теле объекта, сегменте данных или стеке.