zoukankan      html  css  js  c++  java
  • C++核心编程 面向对象

    intmain
    内存分区模型
    代码区:存放函数的二进制代码,有操作系统进行管理的
    全局区:存放全局变量和静态变量以及常量
    栈区:由编译器自动分配与释放,存放函数的参数值,局部变量等
    堆区:由程序员分配和释放,若程序员不释放,则在程序接收的时候由操作系统回收

    内存机制:

    c++ 中在程序运行前分为全局区和代码区

    代码区的特点是共享和只读

    全局中存放全局变量、静态变量、常量

    常量去中存放const修饰的全局常量和字符串常量

    全局区:

    全局变量(int a = 10;),静态变量(static int a = 10;),常量(字符串常量以及const修饰的变量:(const修饰全局变量 以及  const修饰的局部变量:不在全局区))



    程序运行后
    栈区 :存放函数的参数值,局部变量
    注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

    不要返回局部变量的地址
    int * func(){
      int a = 10; //局部变量,存放在栈区,栈区的数据在函数执行完后自动释放
      return &a;
    }

    堆区:堆区开辟数据
    int * func(){
    //利用new 关键字 可以将数据开辟到堆区
      int * p =new int(10);
    // new int (10) 返回的是地址
      //int a = 10; //局部变量,存放在栈区,栈区的数据在函数执行完后自动释放
      return p;
    }

    1、new 的基本语法
    int * func (){
    //在对去创建整型数据
    //new返回的是 该数据类型的指针

    int * P= new int(10);
    return p;
    }

    void test01(){
      int * p = func();
    cout << *P <<endl;
    //堆区的数据由程序员管理开辟,程序员管理释放
    //如果想释放堆区的数据,利用关键字delete
    delete p;
    }
    2、堆区利用new 开辟一个数组
    void test02(){
      //创建10整型数据的数组,在堆区(new 返回的是一串连续数组地址空间)
      int * arr =new int[10];

      for (int i= 0; i<10;i++){
      arr[i] = i +100;
      }
      for(int i = 0 ;i< 10;i++){
      cout << arr[i] <<endl;
      }
    //释放堆区的数组
    delete [] arr
    //释放数组的时候,需要加上[]

    }

  • 相关阅读:
    IO学习BufferedWriter 规格严格
    Finalization 规格严格
    linux下查看主板内存槽与内存信息 规格严格
    调试JavaScript/VB Script脚本程序(Wscript篇) 规格严格
    ORA01688:unable to extend table name。name partition NAME by NUM in tablespace NAME 规格严格
    Hidden Java 7 Features – SecondaryLoop 规格严格
    Web应用服务器监控 规格严格
    NetBeans 时事通讯(刊号 # 12 Jun 16, 2008)
    NetBeans 时事通讯(刊号 # 12 Jun 16, 2008)
    Win32 DLL的一个调试心得
  • 原文地址:https://www.cnblogs.com/gjianli/p/15265092.html
Copyright © 2011-2022 走看看