内存布局
来源:互联网 发布:知乎注册必须手机号 编辑:程序博客网 时间:2024/04/29 11:18
1. 系统内存管理
32位操作系统,连续寻址的范围是2^32bit=4G的空间。对这4G的空间, win32划分如下:
dos区(win98),私有区, 共享区, 系统区。 0 ~ 4MB 为dos区, 4MB ~ 2GB为私有区,即win32应用
程序运行的空间, 2GB ~ 3GB 为共享区被应用所有程序共享, 包括user32.dll,
kernel32.dll,gdi32.dll。 3GB~4GB为虚拟机区, 包括硬件抽象等等。
2. 应用程序管理(c++)
应用程序即进程最大可用的内存为私有区的2GB(-4MB)空间。 应用程序在自己的私有的0~2GB(期望能寻址2GB)开发, 运行时做物理上的映射。
2GB的空间 划分为是基栈, 浮动栈, 堆。基栈也叫静态存储区,这部分包括代码本身,静态
变量, 全局变量, 常量等。 程序编译后大小确定, 并位于内存的底部0~XM。 浮动栈, 即栈, 函数调用的局部变量在此上分配, 位于基栈以上向上发展,函数调用开始局部变量压栈, 函数结束局部变量弹出。 多线程应用程序除了主线程栈, 每个线程多拥有一个线程栈
(win32 默认线程栈大小为1M)。 堆, 位于顶部2GB向下寻址。
const int c=0;
void Example(int t,const string &str)
{
int i=0;
int *p = new int(0);
}
变量c位于基栈 ,
参数t值传递, 产生临时变量,压入浮动栈内。
如果传入的是 char*, 那么编译器产生临时变量,压入浮动栈内。
变量i位于浮动栈。
变量p位于浮动栈。
变量p指向的物位于堆。
- 内存布局
- 内存布局
- 内存布局
- 内存布局
- 内存布局
- 内存1--内存布局
- C++ 内存布局:内存布局基础
- C++内存对象布局
- c++对象,内存布局
- DOS内存布局
- __int64内存布局
- c++对象内存布局
- Struct的内存布局
- BIOS内存映射布局
- brew接口内存布局
- 对象内存布局 (1)
- 对象内存布局 (2)
- 对象内存布局 (3)
- ASP日期函数
- mtk将图片转成C代码
- spring权限验证
- 如何改变netbeans的look and feel
- MTK6225开机过程-系统启动
- 内存布局
- Java CardLayout学习之一个例子
- sockaddr_in
- 访问本机IIS站点被要求输入用户名和密码
- 关于 GridView1的编辑状态和非编辑状态取值 GridViewEditEventArgs e ,GridViewCancelEditEventArgs e
- Screen Histroy机制
- 在word中添加工具栏
- MTK的高亮机制
- 坐标讨论:LPTODP, DPTOLP, ScreenToClient ,ClientToScreen .