Estou executando um programa C++ simples para aprender sobre memória alocada dinamicamente ( malloc
, realloc
e free
).
Aqui está um trecho do meu código:
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;
Isso gera algo como isto:
The value of the pointer p is: 0x7fbf36c00080
Estou ciente de que o número hexadecimal é o local de memória apontado por p
, que é o primeiro local de memória dessa alocação.
Ao tentar calcular aproximadamente quanta RAM eu tenho, observei o número de dígitos nesse número hexadecimal (12 dígitos) e aumentei 16 para essa potência.
Acontece que 16 ^ 12 é aproximadamente igual a 2,8 x 10 ^ 14 e, como cada local de memória armazena um byte, isso significa que tenho cerca de 280 TERABYTES de RAM, embora saiba que tenho 8 GB.
Onde foi que errei no meu cálculo?