1,管理运行阶段内存空间分配
malloc()/new;
int *pn = new int(存储的类型,内存根据此设定相应存储字节的内存)
pn是内存地址(所以 当声明一个变量的指针变量时没初始化,声明后再来初始化则pn 接收的应该是变量在内存中的地址 &VariableName);
*pn是存储在内存的值 用于给所指向内存中的变量赋值;
为一个数据对象(结构,基本类型)获得并指定分配内存格式
typeName pointer_name = new typeName;
指定需要什么样的内存和用来声明合适的指针
常规变量nights和指针变量值都存储在被称为栈(stack)的内存区域,而new从被称为堆(heap)或自由存储区(free store)的内存区域分配内存;
int b;
//int *pd = &b;
pd = &b;
*pd = 100;
delete 使用完内存后,能够将其归还给内存池,
eg.释放上面new申请的内存区域
delete ps;将释放ps指向的内存,但不会删除指针本身,指针可以再次执行别的内存地址;
配对的使用new/delete,不然很容易发生内存泄露(memory leak),被分配的内存再也无法使用了,神马叫泄露(就好类似你私家车车胎里面的气球,你给它放掉了,除非你再次充气,不然它自己是不能恢复的哈!)
内存一旦泄露严重,程序将由于不断寻找更多内存而终止;
delete不可用于释放常规变量内存;
int * ps = new int;
delete ps;
delete ps;
int jugs = 5;
int * pi = &jugs;
delete pi; // not allowed memory,memoey not allocated by new
记住,请务必记住delete只能用来使用由new申请的内存;