为何C++中int指针默认占用8字节?预期应为4字节
为什么int指针在我的环境中占用8字节而非预期的4字节?
指针的大小只取决于你使用的操作系统位数(内存寻址能力),和它指向的数据类型完全无关。
在64位操作系统/编译环境中,内存地址是64位的,所以指针需要8字节来存储这个地址;只有32位系统中,指针才是4字节。你的测试结果里int32_t显示为4字节,说明int本身确实是32位(4字节),但int*作为指针,它的大小由系统位数决定,和int的大小没有关联。
补充说明:
- 任何类型的指针(
char*/double*/自定义类型指针)在同一个系统下,大小都是相同的,因为它们的核心作用都是存储内存地址。 - 如果你在32位编译环境下运行这段代码,
sizeof(arr)的结果就会是4字节。
你的测试代码:
#include<iostream> using namespace std; int main(){ int* arr = new int; cout << "arr " << sizeof(arr)<<endl; cout << "int16 " << sizeof(int16_t)<<endl; cout << "int32 " << sizeof(int32_t)<<endl; cout << "int64 " << sizeof(int64_t)<<endl; }
运行结果:
arr 8 int16 2 int32 4 int64 8
内容的提问来源于stack exchange,提问作者Beka Tchigladze
相关产品推荐
相关产品推荐

