vars地址的解释是什么
What is explanation of vars' addresses
代码如下:
#include <iostream>
using namespace std;
struct S {};
int main() {
S s1, s2;
char c1, c2;
cout << (uintptr_t)&s1 << '\n' << (uintptr_t)&s2 << '\n' << (uintptr_t)&c1 << '\n' << (uintptr_t)&c2 << '\n';
}
输出示例:
19920899
19920887
19920875
19920863
我猜测每个下一个 var 都有更大的地址和 1 个字节的差异,但差异是 12 个字节并且地址正在减少。
由您compiler/implementation决定填充,决定堆栈增长的方向,决定调试数据是否应该嵌入变量。
C++ 对这个程序的输出没有这样的要求。 “为什么是 12 个字节”取决于您选择的编译器、目标体系结构和使用的编译器标志。
代码如下:
#include <iostream>
using namespace std;
struct S {};
int main() {
S s1, s2;
char c1, c2;
cout << (uintptr_t)&s1 << '\n' << (uintptr_t)&s2 << '\n' << (uintptr_t)&c1 << '\n' << (uintptr_t)&c2 << '\n';
}
输出示例:
19920899
19920887
19920875
19920863
我猜测每个下一个 var 都有更大的地址和 1 个字节的差异,但差异是 12 个字节并且地址正在减少。
由您compiler/implementation决定填充,决定堆栈增长的方向,决定调试数据是否应该嵌入变量。
C++ 对这个程序的输出没有这样的要求。 “为什么是 12 个字节”取决于您选择的编译器、目标体系结构和使用的编译器标志。