我正在运行一个简单的 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。
我的计算哪里出错了?