Вектор (vector) в C++ хранит свой внутренний массив в куче (heap). Когда вы создаете вектор, он выделяет некоторую начальную память в куче, которую можно расширять по мере необходимости при добавлении элементов в вектор.
Это позволяет вектору динамически изменять свой размер во время выполнения программы, без необходимости заранее определять максимальный размер. Кроме того, вектор обеспечивает автоматическое освобождение памяти, когда элементы удаляются или вектор уничтожается.
Важно отметить, что сам объект вектора, который хранит указатель на внутренний массив, находится в стеке (stack), так как он является локальной переменной. Однако, внутренний массив, на который указывает этот указатель, располагается в куче.