c++ - 类型是否总是使用其大小存储在内存中?
问题描述
可以肯定地说原始类型的变量(例如:“char”、“short”、“int”、“long”和“long long”)将始终使用其大小存储在 RAM 中吗?
例如,'long long' 将使用 8 个字节存储,即使它的值等于 15。
解决方案
是和不是。
是的,因为 C++ 和 C 实际上确实公开了(某些)值的内存表示,您甚至可以使用memcpy
某些类型(POD“普通旧数据”类型)安全地将变量的字节复制进或复制出。
不,因为编译器在如何处理生成的代码方面有很大的自由度,例如在如下函数中:
int foo(int a, int b) {
int c = a + b;
return c;
}
很可能c
任何体面的编译器根本不会获得任何 RAM 位置,只会暂时存在于 CPU 寄存器中。
推荐阅读
- android - 改造:D/响应:预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT
- javascript - 访问数组内的对象 - Javascript
- excel-formula - Excel公式比较三列之间的日期
- c# - 在将 Grid.Row 高度设置为 auto 时设置标签的最大高度
- react-native - react-native-navigation 中最顶层包装组件的最佳设计模式
- ansible - 字典上的 Ansible 循环
- python - 检查单词是否以某些前缀开头的最有效方法是什么?
- c - cygwin 上的 AVX 加载指令失败
- matlab - 如何在 Matlab 中使 bwboundaries 的端点保持一致?
- asp.net - 如何渲染 ASP .Net Core 剃须刀页面的区域(pdf)