首页 > 编程知识 正文

new函数和malloc,malloc函数

时间:2023-05-04 02:26:45 阅读:146327 作者:523

1新表示法int * pi=新int; //未初始化的对象int *pi2=new int (; //值初始化的对象vector int * PV=newvectorint (100,5 ); //构造函数vector int * pv2=newvectorint { 1,2,3 }; //在初始化列表中用new分配const对象是合法的new和delete,通常成对出现2 malloc表示法int *pi=(int* ) malloc(sizeof(int ) )。 malloc和free通常成对出现3区分的new调用构造函数,malloc不调用就成功返回类型。 当new操作符请求内存成功时,返回的是对象类型指针,类型严格匹配对象,无需进行类型转换,因此new是类型安全操作符。 malloc在内存申请成功后返回void*,需要强制将类型转换为我们需要的类型,申请失败。 new抛出std:bad_alloc类型的异常,malloc返回NULLnew/delete返回c关键字。 美丽的睫毛膏在申请库函数(stdlib.h ) new内存分配时不需要指定内存块大小。 编译器根据类型自动计算。 malloc必须明确指定内存大小的自定义类型。 new首先调用operator new函数并申请足够的内存。 然后调用类的构造函数,初始化成员变量,最后返回到自定义类型delete调用析构函数,然后调用operator delete函数释放内存。 基础在free中实现。 malloc/free是库函数,只能动态申请和释放内存,不能强制自定义对象生成和析构函数重载。 允许new/delete操作符重载。 特别是,布局new的内容不需要为对象分配内存,而是将地址指定为内存开始区域,new在此内存上完成对象调用构造函数的初始化任务并返回地址。 malloc不允许重载。 参考:

(【c】new和malloc的区别个人面经1:C C Primer中文版(第5版) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。