11、new/delete与malloc/free的区别
时间: 2023-05-31 10:07:01 浏览: 112
1. new/delete是C++中的操作符,而malloc/free是C语言中的库函数。
2. new/delete会调用构造函数和析构函数,而malloc/free不会。
3. new/delete返回的是类型指针,而malloc/free返回的是void*指针。
4. new/delete会自动计算对象的大小,而malloc/free需要手动指定内存块的大小。
5. new/delete可以重载,而malloc/free不能重载。
6. new/delete可以使用placement new来指定对象在已分配的内存块中的位置,而malloc/free不能。
7. new/delete可以在运行时进行类型检查,而malloc/free不能。
8. new/delete在内存不足时会抛出std::bad_alloc异常,而malloc/free返回NULL。
相关问题
new/delete与malloc/free的区别
new/delete和malloc/free都是用来动态分配和释放内存的。
malloc/free是C语言中的函数,在C++中也可以使用。而new/delete是C++中与类相关的运算符,只能用于对象和数组的分配和释放。
关于区别,主要有以下几点:
1. 内存分配方式不同。malloc/free是函数,使用时需要指定要分配的字节数,并返回指向分配内存的指针。new/delete是运算符,使用时需要指定要分配的对象类型,会自动计算需要分配的空间大小。
2. 内存对齐方式不同。malloc函数分配的内存空间未必按照对象的对齐方式分配,可能需要手动对齐。而new运算符会自动按照对象的对齐方式分配内存空间。
3. 内存释放方式不同。malloc函数分配的内存需要使用free函数进行释放;new运算符分配的内存需要使用delete运算符进行释放。
4. 构造函数和析构函数的调用。在使用new运算符分配内存空间时,会自动调用对象的构造函数来初始化对象;在使用delete运算符释放内存空间时,会自动调用对象的析构函数来进行清理工作。而使用malloc和free函数则需要手动调用构造函数和析构函数。
new/delete与malloc/free的区别?
new 和 delete 是 C++ 语言中的内存分配和释放函数,而 malloc 和 free 是 C 语言中的内存分配和释放函数。new 和 delete 更加安全,可以帮助程序员更好地管理内存,而 malloc 和 free 只是简单地分配和释放内存,不提供更多的内存管理功能。
阅读全文