在诸如“ C#in a Nutshell”之类的书中,在堆栈和堆上分配的内容很快被引入。但是,诸如“使用C ++编程原理和实践”之类的C ++资源,该标准以及cppreference.com都从未提及有关内存分配的堆栈或堆-即使当他们谈论存储持续时间/类时也是如此。为什么是这样?它是特定于实现的吗,所有编程语言之间在堆栈和堆的使用方面分配的是相同的?如果后者是正确的,我会理解缺乏对不同实体分配位置的覆盖。
答案 0 :(得分:17)
栈和堆不是C ++语言语言的概念(在C ++标准库中保存奇数函数),而是实现概念。
这就是为什么C ++书籍将使用标准术语自动和动态存储。
如果您正在读一本有关编译器设计和实现的书,那么您将完全希望获得有关堆栈和堆的全面介绍。
答案 1 :(得分:-1)
您感兴趣的不是关于C ++编程语言/标准的书,而是关于例如C ++标准库的实现的书。在那里,您将了解有关堆栈/堆上的内存分配的更多信息。例如,来自Nicolai M. Josuttis的“ The C ++ Standard Library:A Tutorial and Reference”。
由于C / C ++也可以在不支持任何动态内存分配的平台上使用(对于某些嵌入式应用程序,编译器甚至禁止使用new和malloc),因此C ++编程书籍内没有太多参考。