zoukankan      html  css  js  c++  java
  • 变量的内存分配

    内存分配方式有三种:


    (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。


    (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指 令集中,效率很高,但是分配的内存容量有限。


    (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动 态内存的生存期由我们决定,使用非常灵活,但问题也最多。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    //存在静态存储区。
    int global1 = 1;
    int global2 = 2;
    int global3 = 3;
    
    int main()
    {
    	//存在栈上。
    	int local1 = 4;
    	int local2 = 5;
    	int local3 = 6;
    
    	//存在静态存储区。
    	static int static1 = 7;
    	static int static2 = 8;
    	static int static3 = 9;
    
    	//存在堆上。
    	char *buf1 = new char[4];
    	char *buf2 = new char[4];
    	char *buf3 = new char[4];
    
    	cout << "&global1:" << &global1 << endl;
    	cout << "&global2:" << &global2 << endl;
    	cout << "&global3:" << &global3 << endl;
    
    	cout << endl;
    
    	cout << "&local1:" << &local1 << endl;
    	cout << "&local2:" << &local2 << endl;
    	cout << "&local3:" << &local3 << endl;
    
    	cout << endl;
    
    	cout << "&static1:" << &static1 << endl;
    	cout << "&static2:" << &static2 << endl;
    	cout << "&static3:" << &static3 << endl;
    
    	cout << endl;
    
    	printf("buf1:0x%08x\n", buf1);
    	printf("buf2:0x%08x\n", buf2);
    	printf("buf3:0x%08x\n", buf3);
    	return 0;
    }
    

    输出:

    &global1:0x402000
    &global2:0x402004
    &global3:0x402008
    
    &local1:0x22ff40
    &local2:0x22ff3c
    &local3:0x22ff38
    
    &static1:0x40200c
    &static2:0x402010
    &static3:0x402014
    
    buf1:0x003e3fe8
    buf2:0x003e2470
    buf3:0x003e2480
    

    注意全局变量和静态变量分布在连续的内存空间!

  • 相关阅读:
    javascript中依赖属性(Dependency Property)的实现
    金山卫士UI原理解析(2)CBkWindow
    WTL学习笔记(5)双缓冲技术和动画(BufferedPaint)
    数据结构队列
    Windows下如何自定义窗体控件
    金山卫士UI原理解析(1)
    WTL学习笔记(4)控件加强
    WTL学习笔记(5)系统皮肤管理
    小笨开始冬眠了:)
    送时尚数码展门票
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3060860.html
Copyright © 2011-2022 走看看