Как получить начальный адрес и конечный адрес стека в C - PullRequest
0 голосов
/ 10 марта 2020

По какой-то причине я хочу получить диапазоны адресов стека. Например, рассмотрим следующий пример:

int main(){
    int a = 0;
    int b = 0;
}

Есть ли какой-нибудь обобщенный c способ узнать адрес a и b (и другой другой переменной в стеке), без явного использования &a в код? Спасибо!

1 Ответ

2 голосов
/ 10 марта 2020

Адрес памяти в целом и стеки в частности, определяются системой c. Не существует способа получить такую ​​информацию в стандартном C, и нет способа установить указатель стека в C.

На самом деле, если вы не используете Оператор &: переменные с большой вероятностью будут размещаться в регистрах, а не в стеке.

В тех редких случаях, когда вам действительно нужно знать адрес стека, например при работе со встроенными системами низкого уровня, вы обычно go проверяете скрипт компоновщика и жестко кодируете значение, или используете какое-то конкретное c нестандартное расширение компилятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...