Laz*_*zer 4 c c++ memory static memory-management
我总是对静态变量以及内存分配的方式感到困惑.
例如:
int a = 1;
const int b = 2;
static const int c = 3;
int foo(int &arg){
arg++;
return arg;
}
Run Code Online (Sandbox Code Playgroud)
如何分配内存a,b和c?
有什么区别(在内存方面),如果我打电话foo(a),foo(b)和foo(c)?
我总是对静态变量感到困惑
在全局范围内,static仅表示链接时其他文件不可见.
如何为a,b和c分配内存?
所有这些都将存在于可执行文件(例如__DATA段)中,该文件将在执行时映射到RAM中.如果编译器是好的,b并且c将存在于只读数据区域(例如__TEXT段),甚至在优化中消除.
如果我调用foo(a),foo(b)和foo(c),有什么区别(在内存方面)?
foo(b)并且foo(c)将是编译器错误,因为const int&无法转换为int&.
否则没什么区别.通过引用传递相当于在CPU意义上通过指针传递.因此,每个内存的地址都被采用,并被foo调用.
| 归档时间: |
|
| 查看次数: |
3604 次 |
| 最近记录: |