new malloc注意点

本文详细解释了使用new和malloc创建对象的区别,包括构造函数和析构函数的调用,以及内存分配后的初始化过程。

new与malloc一个重要的区别:

new 创建对象时会调用构造函数,而malloc不会。

同样detele会调用析构函数,free不会。

还有new malloc 内置变量 不会付于初值,静态变量和全局变量会,int 0,char NULL。

mallocnew都是用于动态分配内存的关键字,但在C和C++中有一些区别。 1. 语法: - malloc: 在C中使用,语法为`void* malloc(size_t size)`,需要手动指定要分配的内存大小,并返回一个指向分配内存的指针。 - new: 在C++中使用,语法为`new Type`或`new Type[size]`,可以自动计算所需的内存大小,并返回一个指向分配内存的指针。在分配单个对象时使用`new Type`,在分配对象数组时使用`new Type[size]`。 2. 内存分配: - malloc: 分配的内存是以字节为单位的连续块,不会自动初始化为默认。 - new: 分配的内存可以是任意类型的对象,并且会自动初始化为默认。使用`new Type`时,分配的内存足够容纳一个对象;使用`new Type[size]`时,分配的内存足够容纳一个对象数组。 3. 错误处理: - malloc: 如果分配失败,返回NULL指针。 - new: 如果分配失败,会抛出std::bad_alloc异常。 4. 内存释放: - malloc: 使用free函数手动释放已分配的内存。 - new: 使用delete关键字释放通过new分配的单个对象;使用delete[]关键字释放通过new[]分配的对象数组。 需要注意的是,C++中可以使用malloc和free函数来分配和释放内存,但不能在malloc分配的内存上直接调用类的构造函数和析构函数。同样,不能在使用new分配的内存上调用free函数进行释放。建议在C++中使用new和delete关键字进行动态内存分配和释放,以便正确处理对象的构造和析构过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值