变量的内存分布
来源:互联网 发布:在线照片制作软件 编辑:程序博客网 时间:2024/04/29 10:22
const变量存储在.rodata(read only)区域;
char* p = "abcd"; p指向的是静态文本区域.text
.rodata 和 .text 被合并为一个segment,由OS保护起来,只可读。
register变量存放在.bss区域;
局部变量存放在栈空间,static变量存放在静态存储空间 (.data)
.bss 和.data 被合并为一个segment,可读可写。
变量在内存中的不同位置,影响着变量的读写方式。程序1很正常,因为p在栈上,可以修改。
程序2就会出错。因为对于全局区域的值,程序员是不可以修改的。
如果想要修改其值,可以声明为静态变量,这样编译器会在静态存储区域分配一块空间。如程序3:
另外,一个类中的静态成员变量时不占这个类的存储空间的。
比如class A{}; class B{static int M;};
sizeof(A) = sizeof(B) = 1
静态成员应该在类定义体的外部初始化。static int B::M = 6;
const成员应该在初始化列表中初始化,除此之外,没有任何地方可以改变它的值。
- 变量的内存分布
- C++变量的内存分布
- C语言变量内存分布
- 变量与地址@内存分布
- C语言变量内存分布
- C++ 类内部的成员变量的内存分布
- C++系列之-----字符串变量的内存分布
- c++ 成员函数与变量的内存分布
- 程序的内存分布
- c++内存的分布
- C 的内存分布
- 内存的分布问题
- c++内存的分布
- c++内存的分布
- 程序的内存分布
- 程序的内存分布
- c++内存的分布
- JAVA 的内存分布
- 名师指导:中考物理三大“法宝”
- JavaScript中简单应用正则表达式的小实例_文本替换_replace
- “完形填空”五步解题法
- 怎样制定适合自己的学习计划?
- 程序里的对象,世界里的人
- 变量的内存分布
- 妥善处理遗留缺陷
- 该不该做软件这个行业?
- 打哈哈
- linux下./configure提示permission declined的解决办法
- 《软件自动化测试成功之道》节选4 - 标准控件的特殊问题的处理方法
- 推荐网站
- 博客开张了
- 使用TAPI开发电话防火墙程序