程序运行时内存管理

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申请的内存;

原文地址:https://www.cnblogs.com/ruiy/p/adds.html