我正在运行一个简单的 C++ 程序来了解动态分配的内存(malloc
,realloc
和free
)。
下面是我的代码片段:
void *p = malloc(10); // Allocates 10 bytes in memory; `p` is a pointer to the first byte.
cout << "The value of the pointer p is: " << p << endl;
输出类似这样的内容:
The value of the pointer p is: 0x7fbf36c00080
我知道十六进制数是指向的内存位置p
,这是此分配的第一个内存位置。
当尝试粗略计算我有多少 RAM 时,我查看了该十六进制数的位数(12 位数字)并将 16 提升到该次方。
事实证明 16^12 大约等于 2.8x10^14,并且由于每个内存位置存储一个字节,这意味着我有大约 280 TB 的 RAM,即使我知道我有 8 GB。
我的计算哪里错了?