我是 C++ 的新手,发现在 C++ 中,有两种方法来创建对象:堆栈上的对象和堆上的对象。
但我很想知道使用堆栈上的对象与使用堆上的对象有什么优缺点。
在什么情况下,第一种方法优于第二种方法,反之亦然?
堆栈上的对象具有非常巧妙的属性,即支持它们的内存会在堆栈帧末尾自动释放(例如,当函数返回时)。C++ 通过以下方式扩展了这一概念:also为所有堆栈对象调用析构函数whenever它们超出了范围(即,在函数返回之前抛出异常的情况下,它们仍然被释放。)因为这使得内存管理变得非常简单,并且内存管理错误具有容易犯和难犯的令人沮丧的组合检测,只要可行,应优先考虑堆栈分配。
堆栈分配对象的缺点是……嗯……它们在函数返回时被删除。有时有正当理由希望物体寿命更长。在这些情况下,您别无选择,只能从堆中分配。
另一点需要考虑的是堆栈分配差不多必须是软件编译时已知的大小(但请参阅某些平台上可用的 alloca 函数。)在现实世界中有大量场景,直到程序运行时您才知道需要多少内存。以地址簿应用程序为例。如果我正在编写这样的应用程序,我显然不知道最终用户想要在他们的地址簿中包含多少人。用户必须告诉程序这个信息。在这种情况下,您需要动态分配内存,因此您将再次考虑堆分配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)