Products
GG网络技术分享 2025-11-12 18:02 5
new和mallocdou是用于动态分配内存的函数,它们在C++和C语言中dou有用。下面详细说明它们之间的不一样:
返回类型不同

malloc返回的是一个void*类型的指针,需要在C++中用类型转换来指定具体的指针类型。new返回的是一个指向新鲜分配内存的指针,类型与求分配的类型相匹配,无需进行转换。分配对象地方不同
new不仅Neng分配地方,还Neng调用构造函数来初始化对象。malloc只分配地方,不进行随便哪个初始化。内存越界检查
new在分配内存时会检查是不是有足够的内存地方, Ru果不够,会抛出std::bad_alloc异常。malloc不会进行越界检查, Ru果求的内存巨大细小超出系统可分配的范围,malloc会返回NULL。内存分配输了时的返回值
new在分配输了时会抛出std::bad_alloc异常。malloc在分配输了时会返回NULL。内存初始化
malloc分配的内存块中的数据是未初始化的,即其值是随机的。new会调用构造函数来初始化分配的内存,所以呢内存中的数据是Yi知的。构造函数和析构函数的调用
new会自动调用对象的构造函数。malloc不会调用随便哪个构造函数,需要程序员手动调用。与C语言的兼容性
malloc和free是C语言的标准库函数,Neng用于C程序中。new和delete是C++的关键字,在C++中用。类型平安性
new给了geng优良的类型平安性,基本上原因是它返回的指针类型与求的类型相匹配。malloc返回的是void*,需要手动转换类型,轻巧松出错。在实际编程中,根据不同的需求和场景选择用new或malloc。Ru果需要分配对象并且希望调用构造函数进行初始化,得用new。Ru果只是需要分配内存块而不需要初始化,或者需要与C语言代码交互,Neng用malloc。
Demand feedback