c++内存获取和释放:new delete
c内存获取和释放:malloc free
1、brk,mmap系统调用
2、malloc free是libc库函数。
malloc,free是libc实现的库函数,主要实现了一套内存管理机制,当其管理的内存不够时,会通过brk或mmap系统调用去向内核申请进程的虚拟地址空间,如果其维护的内存满足malloc调用,则直接返回,free时会将地址返回空闲链表。
除了libc自带的动态内存管理库,还有其他一些内存管理库,如google实现的tcmalloc,其在内存管理上有很多改进,效率和安全性会更好。
3、new delete是c++的内置运算符。
相当于增强版的malloc和free,其在安全性和功能性方面做了更多工作。
new的实现会调用malloc。
对于基本类型变量,它只是增加了一个cookie结构,内置了内存溢出检测,所以比malloc更安全。
对于自定义类型,c++编译器可以自动做构造和析构,new运算符会自动计算需要的空间大小,然后根据类型自己调用构造函数,