zoukankan      html  css  js  c++  java
  • C++ 动态内存

    C++ 程序中的内存分为两个部分:

    • 栈:在函数内部声明的所有变量都将占用栈内存。
    • 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。
    /*我们可以定义一个指向 double 类型的指针,然后请求内存,
    该内存在执行时被分配。我们可以按照下面的语句使用 new 运算符来完成这点:
    double* pvalue = NULL; // 初始化为 null 的指针
    pvalue = new double;   // 为变量请求内存
    delete pvalue;        // 释放 pvalue 所指向的内存
    
    假设我们要为一个字符数组(一个有 20 个字符的字符串)分配内存,
    我们可以使用上面实例中的语法来为数组动态地分配内存
    char* pvalue  = NULL;   // 初始化为 null 的指针
    pvalue  = new char[20]; // 为变量请求内存
    delete [] pvalue;        // 删除 pvalue 所指向的数组
    
    一维数组
    int *array=new int [m];// 动态分配,数组长度为 m
    delete [] array;//释放内存
    
    二维数组
    int **array
    // 假定数组第一维长度为 m, 第二维长度为 n
    // 动态分配空间
    array = new int *[m];
    for( int i=0; i<m; i++ )
    {
    array[i] = new int [n]  ;
    }
    //释放
    for( int i=0; i<m; i++ )
    {
    delete [] arrary[i];
    }
    delete [] array;
    
    三维数组
    int ***array;
    // 假定数组第一维为 m, 第二维为 n, 第三维为h
    // 动态分配空间
    array = new int **[m];
    for( int i=0; i<m; i++ )
    {
    array[i] = new int *[n];
    for( int j=0; j<n; j++ )
    {
    array[i][j] = new int [h];
    }
    }
    //释放
    for( int i=0; i<m; i++ )
    {
    for( int j=0; j<n; j++ )
    {
    delete array[i][j];
    }
    delete array[i];
    }
    delete [] array;
    
    
    */
    
    
    #include <iostream>
    using namespace std;
    class Box
    {
    public:
    	Box() 
    	{
    		cout << "调用构造函数!" << endl;
    	}
    	~Box() 
    	{
    		cout << "调用析构函数!" << endl;
    	}
    };
    
    int main()
    {
    	Box* myBoxArray = new Box[4];// 动态分配,数组长度为 4
    	delete[] myBoxArray; // 删除数组
    	system("pause");
    	return 0;
    }
    

      

  • 相关阅读:
    可变形参 Day07
    流程控制 Day06
    基本数据类型的值传递 和引用数据类型的引用传递 Day06
    一维数组的求平均成绩 Day06
    一维数组的初始化及遍历 Day06
    字符串分割+二维数组 Day15练习
    Java对数组和列表的排序1.8新特性
    Java Stream
    JPA学习(六、JPA_JPQL)
    JPA学习(五、JPA_二级缓存)
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/11439181.html
Copyright © 2011-2022 走看看