C++动态开辟

                                                                    C++中的动态内存开辟

C语言中我们用malloc来动态开辟空间:

     int *p = (int*)malloc(sizeof(int));

释放用free:

  free(p);

在C++中动态开辟使用new:

int *p = new int;

释放空间使用delete:

delete p;

我们也可以对其进行初始化操作:

int *q =new int(10);    // 给里面放了值10;

delete q;

C++动态开辟数组:

int *parr = new int[10];

delete []parr;

注意的是C++动态开辟数组没办法进行初始化,但是可以零初始化

int *parr = new int[10]();

把动态开辟的数组里的值全置为0;

C++动态开辟二维数组:

二维数组相当于多个一维数组:

int **p = new int*[10];

for(int i = 0;i < 10;i++)

{

         p[i] = new int[10];

}

释放空间:

for(int i = 0;i < 10;i++)

{

        delete [] p[i];

}

        delete [] p;

C语言动态内存开辟失败会返回NULL,C++ 开辟失败会抛出异常

常量内存块开辟要初始化

重定位new   开辟在自主存储区,且不需要delete释放控件:

int a = 10;

char *p4 = new(&a) char('a');

猜你喜欢

转载自blog.csdn.net/August_25/article/details/84236824
今日推荐