[1]new和malloc区别(详解): 1)异常处理:new分配内存失败抛出 bad_alloc 异常;malloc分配内存失败返回 NULL 2)内存块:new不需要指定内存块大小,编译器会根据类型自动确认;malloc 需要显式指定内存块大小 3)初始化:new 是 C++运算符,调用构造函数初始化;malloc 是C语言库函数,不会调用构造函数,需要手动初始化 4)内存分配为止:new 在自由存储区,malloc 在堆区,当然自由存储区本质也是堆区,但是前者是逻辑概念,后者是物理概念 5)内存释放:delete 调用析构函数,并将指针设置为 nullptr;free 不会调用析构,不会将指针设为 nullptr,可能产生野指针 6)数组释放:delete 可正确释放 new[] 分配的数组;free 不了解数组大小,不能释放 malloc 分配的数组