文章目录
编译器内包含三块内存区
用于静态变量(可能再细分)
用于自动变量
用于动态存储(可以理解为heap)
运算new 开辟内存空间
定位new运算符
new + (开辟内存的地址) + 开辟空间的大小
开辟空间的大小可以使用运算符的重载进行表示;
举个例子:
int = sizeof(int) ->也就是说这个会创建4个自己的内存大小
double[4] = sizeof(double[4]) ->开辟了4*8内存空间大小
关于如何释放定位new运算符开辟的内存空间
对于使用非定位运算符new开辟的动态内存空间(堆内存)而言,我们 可以直接使用delete 或者 delete[] 来释放掉之前创建的内存空间
但是对于使用了定位运算符创建的内存空间,我们不能这么做,因为 我们对于指向的内存可能是指向静态内存的
using 声明和 using命名空间的区别
using 声明
就可以理解为是声明了一下,即声明的作用域内存在这个变量了,你就不可以再创建同名的变量了
using 编译指令
可以解决为把这个命名空间告诉了这个作用域,在这个作用域中,可以用 当然也可以选择不适用,如果你不使用,你又新定义了一个同名的变量,那也是可以的 它只是提供了一个编译指令 用不用去取决于你
namespace
如果没有名字的话 就相当于生成了一个仅该文件可以使用的命名空间 就像是全部变量都是 static