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');
二.名字空间作用域
::全局作用域访问符
如:
CY1202::Sum; 调用CY1202下的Sum
同名名字空间作用域会进行合并
using声明:
using CY1202::Sum; 把Sum符号暴露在声明点的作用域下;
using namespace CY1202 把CY1202所有的都暴露在声明点的作用域下