动态内存/类中申请动态内存

c++中用new申请动态内存,delete  清空内存

new申请成功返回正确的指针,不成功返回NULL;

 类  中申请动态空间  需要在  构造函数  中申请、创建需要的数据结构

    并且在析构函数中删除申请的空间

简单的new

//new 动态申请 数组  和 delete 所申请的空间
// new 操作失败时  返回NULL  否则返回首单元地址
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int *p,*q;
    p=new int (100);
    q=new int [10];
    if(q==NULL){
        cout<<"can't allocate more memory."<<endl;
        exit(1);
    }
    for(int i=0;i<10;i++) *(q+i)=i;
    delete p;
    delete []q;   //delete 清空了new申请的空间
    int a=10;
    p=&a;
    cout<<*p<<endl; //输出的是a 的值
    return 0;
}

  在类中 动态创建二维数组

一个指向指针的指针,指向一个指针数组,指针数组指向各个元素

string**s = new string*[10];
        for(int i=0;i<10;i++)
            s[i] =new string[10];

  

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 class matrix
 4 {
 5 public:
 6     matrix(string na="mark",string i="0000000"){
 7         one = new string*[10];
 8         for(int i=0;i<10;i++)
 9             one[i] =new string[10];
10 
11         if(one==NULL){cout<<"can't allocate more memory"<<endl;exit(1);}
12 
13         for(int i=1;i<10;i++)
14             for(int j=0;j<10;j++){
15                 one[i][j]=i%2?"1":"0";
16             }
17         cout<<"allocate is finished"<<endl;
18     }
19     ~matrix(){
20         for(int i=0;i<10;i++){
21             for(int j=0;j<10;j++)
22                 cout<<one[i][j]<<" ";
23             cout<<endl;
24         }
25         cout<<"delete is finished"<<endl;
26     }
27 private:
28     string **one;
29 };
30 
31 int main()
32 {
33     matrix a;
34     return 0;
35 }
View Code
落霞与孤鹜齐飞,秋水共长天一色
原文地址:https://www.cnblogs.com/star-and-me/p/6672033.html