[C++基础]C++内存分配那些事

本文介绍了C++中的内存分配,包括静态与动态内存分配的区别,详细讲解了new和delete操作符的工作原理以及动态内存分配的语法。此外,还讨论了浅拷贝与深拷贝的概念,强调了正确使用delete平衡new的重要性,并提到了指针与引用的使用场景和优劣。
摘要由CSDN通过智能技术生成

动静态内存分配

静态内存分配:编译器在处理程序源代码时(即编译时)分配。

动态内存分配:程序执行时调用运行时刻库函数来分配。

静态与动态内存分配的两个主要区别:

  • 静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量,我们通过指针间接地对它进行操作。 
  • 静态对象的分配与释放由编译器自动处理。程序员需要理解这一点,但不需要做任何事情。相反,动态对象地分配与释放,必须由程序员显示地管理,相对来说比较容易出错 。

new/delete

C语言中进行内存的动态分配与释放,我们使用malloc()free()函数。C++中不再使用C语言中的malloc()free()函数进行内存的动态分配与释放。因为,malloc()函数在运行时从自由内存中分配存储单元。C++中创建对象时会发生两件事情:(1)为对象分配内存;(2)调用构造函数来初始化那个内存。而构造函数不允许向它传递内存地址来进行初始化。

C++中使用newdelete来进行内存的动态分配与释放。new会触发类对象的构造函数,delete会触发类对象的析构函数。

动态申请内存操作符 new

语法格式:类型名T *指针变量名P = new  类型名T(初值列表);

功能:在程序执行期间,申请用于存放T类型对象的连续的、未命名的内存空间,并依初值列表赋以初值。

结果值:成功:T类型的指针,指向新分配的内存。失败:0NULL

new运算符是一个一元运算符。它隐含地生成一个函数来调用函数operator new(),从这个函数返回被分配内存对象的指针。 

new表达式中,可以在类型名后使用空圆括号:new 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值