new 和 malloc 有什么区别?
类型安全性:
new 是C++的运算符,可以为对象分配内存并调⽤相应的构造函数。
malloc 是C语⾔库函数,只分配指定⼤⼩的内存块,不会调⽤构造函数。
返回类型:
new 返回的是具体类型的指针,⽽且不需要进⾏类型转换。
malloc 返回的是 void* ,需要进⾏类型转换,因为它不知道所分配内存的⽤途。
内存分配失败时的⾏为:
new 在内存分配失败时会抛出 std::bad_alloc 异常。
malloc 在内存分配失败时返回 NULL 。
内存块⼤⼩:
new 可以⽤于动态分配数组,并知道数组⼤⼩。
malloc 只是分配指定⼤⼩的内存块,不了解所分配内存块的具体⽤途。
释放内存的⽅式:
delete 会调⽤对象的析构函数,然后释放内存。
free 只是简单地释放内存块,不会调⽤对象的析构函数
重载与自定义
new/delete
允许全局或类特定的重载,支持自定义内存管理策略(如内存池)。
2314

被折叠的 条评论
为什么被折叠?



