new和malloc区别

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cfy1024/article/details/72822264
1、malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符
2、返回值不同,malloc申请失败返回空指针,而new申请失败则会抛出异常(这是因为new 内置了sizeof、类型转换和类型安全检查功能)。
   void *malloc(long NumBytes):该函数分配了NumBytes个字节,  并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
   void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序  或者是操作系统,也就是释放了这块内存,让它重新得到自由。
3、new/delete的底层实现是malloc/free,但是new/delete还能进行对对象调用构造和析构函数进而对内存进行更加详细的工作, 而malloc/free不能。
4、new不但能在堆上开辟内存,还能在栈上开辟。
例:
char buff[128];//在栈上开辟内存
char *p = new(buff) char[128];//重定位new,用的buff的内存,没开辟内存
展开阅读全文

没有更多推荐了,返回首页