zoukankan      html  css  js  c++  java
  • C++学习-程序内存分配方式

    一、程序的内存布局:

    1)栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。其操作方式类似于数据结构中的栈。

    2)堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,它与数据结构中的堆是两回事,分配方式类似与链表。

    3)全局/静态区(static):全局变量和静态变量存储是放在一块的,在程序编译时分配。

    4)文字常量区:存放常量字符串

    5)程序代码区,存放函数体(类的成员函数,全局函数)的二进制编码

    二、程序示例:

    int a=0;//全局初始化区

    char *p1;//全局未初始化区

    int main()

    {

    int b;//栈

    char s[]="abc";//栈

    char *p2;//栈

    char *p3="123456";//字符串位于常量区,P3位于栈

    static int c=0;//全局静态初始化区

     

    p1=new char[10];//p1位于全局区,p1指向的对象位于堆

    strcpy(p1,"123456");

     

    }

     三、栈和堆的比较:

    1、申请方式:(栈是由系统自动分配int p;,堆是要由程序员申请int *p2=new int(10);,p2本身是在栈当中)

     

  • 相关阅读:
    mysql权限
    Win7_64位使用Mysql Odbc
    二叉树的遍历
    Notepad++的使用
    mysql与mysqld
    Mysql 聚集函数和分组
    Linux 目录
    Linux 倒引号、单引号、双引号
    openkm安装过程
    rhel 7 设置默认运行级别为图形
  • 原文地址:https://www.cnblogs.com/lyp1010/p/11696799.html
Copyright © 2011-2022 走看看