类型总是使用其大小存储在内存中吗
Does type always stored in memory using its size?
可以肯定地说,基元类型的变量(如:"char"、"short"、"int"、"long"answers"long-long"(总是使用其大小存储在RAM中吗?
例如,"long-long"将使用8个字节存储,即使其值等于15。
是和否
是的,因为C++和C实际上公开了(某些(值的内存表示,并且您甚至可以使用memcpy
将变量的字节安全地复制到某些类型(POD"普通旧数据"类型(中。
不,因为编译器在处理生成的代码方面有很大的自由度,例如在这样的函数中
int foo(int a, int b) {
int c = a + b;
return c;
}
最有可能的是,具有任何像样编译器的CCD_ 2根本不会被赋予任何RAM位置,而只是暂时存在于CPU寄存器中。
是的,可以肯定地说,变量存储为其数据类型大小。原因是,如果它是根据其值存储的,那么未赋值的变量将永远不存在(这是没有值的假变量,存在一些垃圾值(。
可以肯定地说,像
char
、short
、int
、long
和long long
这样的基元类型的变量总是使用其大小存储在RAM中吗?
理论上,C++不需要RAM
由于C++11是一个用英语编写的规范(在n3337中(,而且该标准甚至没有提到RAM。我对C++11的理解是,C++实现(原则上(可以在机械计算机上运行,就像巴贝奇分析引擎的一个假设的放大变体一样,而这样的计算机没有任何DRAM模块。
在实践中,大多数处理器都会在RAM中保存一个变量,但请注意,主板的UEFI或BIOS(例如,一些华硕ROG STRIX TRX40-e(可能主要用C或C++编写,并且可以在没有DRAM模块的情况下运行(仅使用处理器CPU缓存(。还可以查看coreboot。
大多数优化编译器(例如最近的GCC,调用为g++ -Wall -Wextra -g -O3
(都会努力将自动变量保存在处理器寄存器中。
例如,
long long
将使用8个字节存储,即使其值等于15。
很可能是的,但您应该使用标准的std::int64_t
类型。
最后,大多数C++程序都在一些支持虚拟内存的操作系统的控制下运行,有时变量甚至不在RAM中(只是在某个磁盘的交换区中(。
- 将字符串存储在c++中的稳定内存中
- 类型总是使用其大小存储在内存中吗
- 使用无符号字符数组有效存储内存
- 具有内存顺序的原子负载存储
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 存储在哪个内存段(代码/数据段)类(员工)中?
- 可用存储空间会消耗更多剩余内存吗?
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 将数据存储在内存中以供以后访问
- 英特尔将指令存储在重叠的内存区域
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- std::set 是否将对象连续存储在内存中?
- 原子加载和存储与内存顺序放宽
- 我应该以字符形式存储数字以节省内存吗?
- std::unordered_set 中的元素如何存储在C++内存中?
- 是否可以更早地销毁对象,使其存储内存被后续对象重用
- SSE加载/存储内存事务
- 在类- c++中存储内存内容