gpt4 book ai didi

c++ - 静态变量情况下的内存分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:56 26 4
gpt4 key购买 nike

我总是对静态变量以及它们的内存分配方式感到困惑。

例如:

int a = 1;
const int b = 2;
static const int c = 3;

int foo(int &arg){
arg++;
return arg;
}

abc的内存是如何分配的?

如果我调用 foo(a)foo(b)foo(c),有什么区别(在内存方面) >?

最佳答案

I am always confused about static variables

在全局范围内,static仅表示链接时其他文件不可见。

How is the memory allocated for a,b and c?

所有这些都将存在于可执行文件中(例如 __DATA 段),该文件将在执行时映射到 RAM 中。如果编译器好的话,bc会存在于只读数据区(如__TEXT段),甚至在优化中被淘汰。

What is the difference (in terms of memory) if I call foo(a), foo(b) and foo(c)?

foo(b)foo(c) 将是编译器错误,因为 const int& 无法转换为 int&.

否则没有区别。在 CPU 的意义上,按引用传递等同于按指针传递。于是取了各个内存的地址,调用了foo

关于c++ - 静态变量情况下的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com