原本就@Als一个pedantics战争回答在这里,它也引发了C++聊天室的讨论.
Herb Sutter的这篇文章区分了两者,但也有十多年的历史,因为它显然是在2000年之前编写的,并且还讨论了标准草案,它只能代表C++ 98草案.尽管如此,作为委员会的一部分,我仍然希望赫伯能够对这些东西有所了解.
我知道这个和这个问题/答案,但第二个引用了Herb的文章,而第一个引用另一个来源,简单地拒绝使用术语"堆",也就是说它们都不完全令人满意.此外,我在SO上找不到任何free-store或freestore标签(直到这个问题,我现在创建了前一个).
现在,真的有什么区别,如果有的话?
小智 23
那么,当前的C++标准只使用术语"免费存储" - 标准中唯一使用"堆"的是描述标准库中的堆数据结构.因此,"堆"在尝试准确地讨论C++问题时不是一个非常有用的术语,当然每个人都这样做.
Nod*_*ode 16
在Herb的书"Exceptional C++"中,他定义:
堆:由malloc/ freefunctions 分配/释放的动态内存区域.
自由存储:由new/ 分配/释放的动态内存区域delete.
它可能new与delete在方面来实现malloc和free,所以在技术上,他们可能是相同的内存区域.但是,由于标准没有指定这一点,最好分开处理它们,而不是混合malloc/ delete或new/ free.
在free-store技术上不是堆,就像局部变量在技术上并不在堆栈中.但是,根据我的经验,找到任何不接受这些条款的人是极其罕见的.
| 归档时间: |
|
| 查看次数: |
11344 次 |
| 最近记录: |