网站备案半身照,哈尔滨建设信息网站,wordpress安装幻灯片插件,中山营销网站建设联系方式为什么不是
LaoJiaHelper mydalnew LaoJiaHelper ();
而是LaoJiaHelper mydal#xff1f;
这个都没有new #xff0c;对象为什么能用#xff1f;在 C 中#xff0c;有两种创建对象的方式#xff1a;静态分配和动态分配。 静态分配#xff1a; 当你使用类似 LaoJiaHelpe…为什么不是
LaoJiaHelper mydalnew LaoJiaHelper ();
而是LaoJiaHelper mydal
这个都没有new 对象为什么能用在 C 中有两种创建对象的方式静态分配和动态分配。 静态分配 当你使用类似 LaoJiaHelper mydal; 这样的语法创建对象时实际上是在栈上分配了一个 LaoJiaHelper 类型的对象。在程序执行过程中当进入作用域比如 main 函数分配给对象 mydal 的内存将被自动回收。这意味着当 mydal 的作用域结束时比如 main 函数结束它会自动被销毁释放其占用的内存。 动态分配 如果你使用 new 运算符来创建对象例如 LaoJiaHelper *mydal new LaoJiaHelper();则会在堆上分配一个 LaoJiaHelper 类型的对象并返回其地址。堆上分配的对象不会在作用域结束时自动销毁因此你需要手动调用 delete 来释放内存以免造成内存泄漏。
在你的代码中使用 LaoJiaHelper mydal; 的方式是静态分配对象。这种方式适用于大多数情况特别是当对象的生命周期在函数或作用域内并且对象不需要在堆上动态分配。当 main 函数结束时mydal 对象会自动被销毁不需要手动释放内存。
需要注意的是C11 引入了智能指针std::shared_ptr 和 std::unique_ptr它们可以帮助在动态分配对象时更好地管理内存避免手动调用 delete减少内存泄漏的风险。但在你的代码中并没有使用动态分配因此无需担心内存管理问题。