Я запускаю простую программу, чтобы показать объем памяти между стеком и кучей в рамках одного процесса, и я получаю некоторые странные значения, которые я могу неправильно понять.
Я выполняю этот блок кода:
int main() {
uint64_t *heap = new uint64_t;
uint64_t stackvar;
uint64_t diff = &stackvar - heap;
float size = (float) diff/ (1024 * 1024 * 1024); // conversion to GB
free(heap);
return 0;
}
Значения адреса выделенной переменной кучи и переменной стека имеют смысл, но я считаю, что неправильно понимаю, как вычислить памятьемкость между этими двумя значениями, поскольку окончательное значение diff
находится в диапазоне 16 ТБ, как только я выполню преобразование в приведенном выше коде.
Как эффективно преобразовать этот диапазон в понятный диапазон памяти,или как правильно интерпретировать diff
, если я допустил ошибку?