开辟内存new/malloc&作用域

c++中开辟内存用new关键字 如:int *p=new int;

释放内存 用delete  如delete p;

new 的作用:1、开辟内存 2、初始化  3、开辟数组  4、释放数组

c++中开辟一维数组 如 int *cppp=new int[10] ;释放数组 delete []cppp;

c语言中开辟一维数组:int *cp=(int *)malloc(sizeof(int)*10);

c语言中动态开辟二维数组:

int **parr=(int **)malloc(sizeof(int *)*10)

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

{

parr[i]=(int *)malloc(sizeof(int *)*10);

}

释放二维数组

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

{

free(parr[i]);

}

free(parr);

c++中动态开辟二维数组:

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

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

{

cpparr[i]=new int[10];

}

释放内存

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

{

delete[]cpparr[i];

}

delete[]cpparr;

c++中常量要进行初始化要加const如const int *cp=new const int(10);

replace new:

重定位new的用法:

如int *q=new int;

char *p=new(q)char ('a');

new与malloc:

1、new开辟的内存块在自由存储区域

     malloc开辟的内存块在堆上

2、new返回类型安全

      malloc返回类型不安全

3、new不需要计算内存开辟的大小

      malloc 需要计算内存开辟的大小

4、new抛出异常(bad_alloc)

    malloc 返回NULL

5、new可以作初始化

      malloc单纯开辟内存

作用域:全局作用域、局部作用域  、名字空间作用域、类作用

名字空间作用域:using声明,把后面声明的符号暴露在using声明当前的作用域

同名的名字空间作用域合并

猜你喜欢

转载自blog.csdn.net/post_joke/article/details/86261945