都是在栈上进行动态的内存操作
用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数
delete 会调用对象的destructor,而free 不会调用对象的destructor
以上说法都不正确
new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。
malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类型对象构造和析构工作。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题