new和delete
内置类型产生的临时量都是常量,不可更改。在寄存器里
自定义类型产生的都是变量,可以修改,在内存上
const & 可以引用一个不可寻址的常量,因为会产生临时量,寄存器里的值不可寻址
函数返回值:
<=4 eax
>=4 <=8 eax edx
>8 产生临时量
产生临时量的三个时机:
1. 函数调用之前
2. 函数return语句处
3. 函数调用之后
动态内存的开辟
1. malloc和free
Int *p=(int *)malloc(sizeof(int));
free(p);
Int *p=(int *)malloc(sizeof(int)*100);
free(p);
2. new : malloc 和 初始化(内置类型,自定义类型调用构造函数)
delete :先析构,后free
Int *p=new int(10);
delete p;
Int *p=new int [100];
delete []p;
如何正确申请一个三行四列的二维数组?
malloc的实现调用系统API brk(小内存)和mmap(大内存)。根据申请内存大小来决定调用这两个哪个函数。