malloc和new在内存分配位置上有区别吗
时间: 2023-04-02 10:04:01 浏览: 149
malloc和new在内存分配位置上没有区别,它们都可以用于动态分配内存。但是,它们的使用方式和语法不同。malloc是C语言中的函数,需要手动指定分配的内存大小,而new是C++中的运算符,可以自动计算所需的内存大小。此外,new还可以调用对象的构造函数,而malloc不能。
相关问题
malloc分配内存和new分配内存有什么区别
1. 语法不同:malloc是C语言中的函数,需要使用头文件stdlib.h来调用;而new是C++中的关键字,不需要包含任何头文件。
2. 返回类型不同:malloc返回的是void*指针类型,需要进行强制类型转换;而new返回的是具体类型的指针,不需要进行强制类型转换。
3. 分配内存的方式不同:malloc只负责分配内存,不会自动调用构造函数,需要手动初始化对象;而new则会调用构造函数来初始化对象。
4. 内存越界检查不同:malloc分配内存时不会检查数组越界问题,而new会检查是否越界。
5. 内存释放方式不同:malloc分配的内存需要使用free函数进行释放;而new分配的内存需要使用delete关键字进行释放。
总的来说,new分配内存相对于malloc更加方便、安全,而且可以自动调用构造函数进行对象初始化,是C++中更为推荐的内存分配方式。但是,在一些特定的场景下(比如需要与C语言代码进行交互),还是需要使用malloc。
malloc和new的区别
malloc和new都可以用于动态分配内存空间,但是使用上有一些区别:
1. malloc是一个函数,需要指定需要分配的字节数,返回一个void*指针;new是一个运算符,需要指定需要分配的对象的类型,返回该类型的指针。
2. malloc分配的内存空间是原始的,需要手动进行初始化和释放;new分配的内存空间是已经初始化过的,且在对象生命周期结束时会自动释放。
3. new可以进行对象构造,而malloc不行。
4. 在没有足够的内存可分配时,malloc返回NULL;而new会抛出一个异常。
阅读全文