在《C# in a Nutshell》等书中,对于栈和堆内存的分配介绍得非常快。然而,《Programming Principles and Practice Using C++》、标准和cppreference.com等C++来源在讨论存储期/类时从未提到过栈或堆,为什么呢?这是因为不同编程语言中分配位置是否相同是实现特定的吗?如果后者是真的,我就能理解为什么没有涵盖不同实体分配位置的内容了。请注意保留原文中的html标签及其格式。
堆和栈不是C++语言的概念(除了C++标准库中的某些函数),而是实现概念。
这就是为什么 C++ 书籍会使用标准术语“自动”和“动态”存储。
如果您正在阅读有关编译器设计和实现的书,则应该可以完全预料到有关堆和栈的全面描述。
你感兴趣的不是关于C++编程语言/标准的书,而是关于例如C++标准库的实现。在那里,你会更多地了解有关堆栈/堆上内存分配的信息。例如,Nicolai M. Josuttis的《C++标准库:教程与参考》。
因为C/C++也可以在没有任何动态内存分配支持的平台上使用(对于一些嵌入式应用程序,编译器甚至禁止使用new和malloc),所以C++编程书籍中没有太多相关参考资料。