当前位置:首页 C++ > 正文

C和C++分配释放内存区别?

作者:野牛程序员:2023-12-04 20:31:39 C++阅读 2805

C++中的new和delete是关键字,而malloc和free是库函数。使用new时,无需指定内存块的大小,编译器会根据类型信息自动计算;而malloc需要显式指定内存块的大小。new操作符分配内存成功时返回对象类型的指针,而malloc返回void指针,需要进行类型转换。

在分配失败时,new会抛出bad_alloc异常,而malloc则返回NULL。new会调用operator new分配内存,并调用构造函数初始化对象,而delete会调用析构函数,然后调用operator delete释放内存。malloc和free只能动态申请和释放内存,无法进行自定义类型的构造和析构工作。

C++允许重载new和delete操作符,而malloc不允许重载。new操作符从自由存储区(free store)上分配内存,而malloc函数从堆上分配内存。自由存储区是new操作符的一个抽象概念,而堆是操作系统维护的特殊内存区域,用于程序的内存动态分配。自由存储区并不等同于堆,因为通过new操作符分配的内存不一定位于堆中。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击