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本身是在栈当中)

     

  • 相关阅读:
    cookie
    手写Promise/Promise.all/promise.race
    Hbuilder如何真机调试?
    什么是深拷贝?什么是浅拷贝?如何实现深拷贝?
    Vue.set()?怎么用?
    vueRouter怎么用?
    Vue如何实现组件间通信?
    reduce()累加器
    filter()数组遍历
    map()数组遍历
  • 原文地址:https://www.cnblogs.com/lyp1010/p/11696799.html
Copyright © 2011-2022 走看看