当前位置: 首页 > news >正文

C++中的静态分配和动态分配

为什么不是
LaoJiaHelper mydal=new LaoJiaHelper (); 
而是LaoJiaHelper mydal? 
这个都没有new ,对象为什么能用?

在 C++ 中,有两种创建对象的方式:静态分配和动态分配。

  1. 静态分配:
    当你使用类似 LaoJiaHelper mydal; 这样的语法创建对象时,实际上是在栈上分配了一个 LaoJiaHelper 类型的对象。在程序执行过程中,当进入作用域(比如 main 函数),分配给对象 mydal 的内存将被自动回收。这意味着当 mydal 的作用域结束时(比如 main 函数结束),它会自动被销毁,释放其占用的内存。

  2. 动态分配:
    如果你使用 new 运算符来创建对象,例如 LaoJiaHelper *mydal = new LaoJiaHelper();,则会在堆上分配一个 LaoJiaHelper 类型的对象,并返回其地址。堆上分配的对象不会在作用域结束时自动销毁,因此你需要手动调用 delete 来释放内存,以免造成内存泄漏。

在你的代码中,使用 LaoJiaHelper mydal; 的方式是静态分配对象。这种方式适用于大多数情况,特别是当对象的生命周期在函数或作用域内,并且对象不需要在堆上动态分配。当 main 函数结束时,mydal 对象会自动被销毁,不需要手动释放内存。

需要注意的是,C++11 引入了智能指针(std::shared_ptrstd::unique_ptr),它们可以帮助在动态分配对象时更好地管理内存,避免手动调用 delete,减少内存泄漏的风险。但在你的代码中,并没有使用动态分配,因此无需担心内存管理问题。

http://www.lryc.cn/news/105494.html

相关文章:

  • 【Android常见问题(五)】- Flutter项目性能优化
  • JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)
  • Java单例模式几种代码详解
  • PHP代码审计--理论
  • 在云服务器上,clone github时报Connection timed outexit code: 128
  • 小型双轮差速底盘寻迹功能的实现
  • 第七篇:k8s集群使用helm3安装Prometheus Operator
  • Chrome 75不支持保存成mhtml的解决方法
  • 工程监测振弦采集仪应用于岩土工程监测案例
  • 配置HDFS单机版,打造数据存储的强大解决方案
  • U盘删除的文件怎么找回?4个简单方法分享!
  • 【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序2
  • 形参动态内存开辟和柔性数组
  • 【LLM系列之指令微调】长话短说大模型指令微调的“Prompt”
  • MacOS使用brew如何下载Nginx
  • linux ftp
  • 你知道HTTP与HTTPS有什么区别吗?
  • keil使用printf函数重定串口输出,程序卡在Reset_Handler
  • Redis预热 雪崩 击穿 穿透
  • Shell脚本学习-MySQL单实例和多实例启动脚本
  • vue3搭建(vite+create-vue)
  • 服务器中了360后缀勒索病毒怎么解决,360后缀勒索病毒解密数据恢复
  • 3000字详解:风控核心岗位及核心价值
  • fiddler 手机抓包(含https) 完整流程
  • ChatGPT学python——制作自己的AI模型(一)初步了解
  • 多赛道出海案例,亚马逊云科技为企业提供全新解决方案实现高速增长
  • 异步消息传递技术 JMS AMQP MQTT
  • 利用Python实现汉译英的三种方法
  • 磁盘均衡器:HDFS Disk Balancer
  • 蔚小理新势力互联网造车在CAN FD硬件主框架及后装控制方案开发