Есть код
#include <cstdlib>
#include <iostream>
using namespace std ;
int main() {
register int sp asm ("rsp");
printf("0x%016llx\n", sp);
int intVal = 7 ;
int&& intRval = 5 ;
int& intLval = intRval ;
cout << hex << (void*)&intVal << endl;
cout << hex << &intRval << endl;
cout << hex << &intLval << endl;
return 0 ;
}
Компилирую так:
g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
Выхлоп рограммы такой
0x0000000068bb5580
0x7ffe68bb5588
0x7ffe68bb558c
0x7ffe68bb558c
Хочу спросить, почему RSP(стек пойнтер) указывает на разные места???
И сколько фактически размер указателя на x86_64?
Тестировал тут http://coliru.stacked-crooked.com/