В какой памяти хранятся указатели C++?

Рейтинг: 1Ответов: 2Опубликовано: 07.08.2023

В какой памяти хранятся указатели? Именно указатель, а не переменная, на которую мы указываем. Например, создали мы указатель int* a; и вот теперь задача - а где он хранится, я думаю, что в стеке, но может я не прав.

Ответы

▲ 1

В том же месте, где хранился бы не указатель. Потому что указатели - это подвид переменных (точнее, объектов), а не что-то отличное от них.

▲ 1

Где выделите, там и будет, ведь указатель - просто адрес (число), просто у него особая сематика.

Например:

auto ptr = new Something;

Тут указатель будет хранится на стеке, а в

auto ptr2ptr = new Something*;

Указатель на объект (на самом деле на неопределенные данные, т.к. адрес объекта не присвоен!) будет хранится в куче.

При этом ptr2ptr будет иметь тип Something**, т. е. будет указателем на указатель, который хранится в куче, а сам будет выделен на стеке.