c - 变量定义和地址

标签 c memory-management

当我写的时候:

int a;
int c;

int a, c;
  • ac 何时存储在内存中的相邻 位置? ((&a+1) 等于 &c ?)
  • 您定义它们的方式对此有影响吗?还是只取决于机器?

最佳答案

不,您不能保证ac 在内存中相邻的位置,但通常情况就是这样。我相信 通常 &a - 1 将等于 &c 因为堆栈通常 向下增长。

如果您需要连续变量,则使用数组。

Does the way you define them has influence on this?

通常编译器不会重新排序,除非它必须这样做。例如为了满足某些对齐方式或出于性能原因。


此外,正如 Mysticial 所说,编译器有时可以优化变量,使它们根本不存在于内存中。

关于c - 变量定义和地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929905/

相关文章:

c - 在 C 中初始化长嵌套结构

c - 中位数和众数不正确

c - 无法使用 ioctl SIOCSIFADDR 更改 IP 地址

c - 这种修改后的快速排序划分算法在所有情况下都与原始划分算法的功能相同吗?

c++ - 无法理解 MPI_Bcast

c++ - 这是否为shared_ptr分配新的内存?

language-agnostic - 为什么托管语言不提供手动删除对象的能力?

java - 快速计算多类别组合数

c - malloc 没有返回 NULL 但索引数组给出了段错误

python - 增加 Python 中的内存限制?