首页 > 解决方案 > 类型是否总是使用其大小存储在内存中?

问题描述

可以肯定地说原始类型的变量(例如:“char”、“short”、“int”、“long”和“long long”)将始终使用其大小存储在 RAM 中吗?

例如,'long long' 将使用 8 个字节存储,即使它的值等于 15。

标签: c++typesram

解决方案


是和不是。

是的,因为 C++ 和 C 实际上确实公开了(某些)值的内存表示,您甚至可以使用memcpy某些类型(POD“普通旧数据”类型)安全地将变量的字节复制进或复制出。

不,因为编译器在如何处理生成的代码方面有很大的自由度,例如在如下函数中:

int foo(int a, int b) {
    int c = a + b;
    return c;
}

很可能c任何体面的编译器根本不会获得任何 RAM 位置,只会暂时存在于 CPU 寄存器中。


推荐阅读