new和malloc的异同
时间: 2024-04-11 22:24:25 浏览: 113
malloc 与new的区别
new和malloc都是用于在内存中分配空间的方法,但它们有以下几点异同:
1. 用法不同:
- new是C++中的运算符,用于动态分配内存并调用对象的构造函数进行初始化。使用new时,需要指定要分配的类型,并返回指向该类型的指针。
- malloc是C语言中的函数,用于动态分配内存,但不会调用对象的构造函数进行初始化。使用malloc时,需要指定要分配的字节数,并返回void指针。
2. 内存大小计算方式不同:
- new根据类型自动计算所需的内存大小,无需显式指定字节数。
- malloc需要显式指定要分配的字节数。
3. 错误处理方式不同:
- new在分配内存失败时会抛出std::bad_alloc异常。
- malloc在分配内存失败时返回NULL。
4. 对象构造和析构的处理方式不同:
- new会自动调用对象的构造函数进行初始化,并在对象不再使用时自动调用析构函数进行清理。
- malloc只是分配了一块内存空间,并不会调用对象的构造函数和析构函数,需要手动进行初始化和清理。
5. 返回值类型不同:
- new返回指向分配的对象的指针。
- malloc返回void指针,需要进行类型转换后才能使用。
阅读全文