2

我正在阅读 B.Stroustrup 的“Programming Principles and Practice Using C++”,并且正在尝试做大部分练习。这个很有趣,我不知道从哪里开始。

练习是:

考虑 17.4 中的布局。编写一个程序,告诉静态存储、堆栈和空闲存储在内存中的布局顺序。堆栈向哪个方向增长:向上朝向更高地址或向下朝向更低地址?

17.4 中的布局:

代码 - 代码的内存

静态数据 - 全局变量的空间

免费存储 - 可用内存

堆栈 - 用于调用函数的内存及其参数和局部变量的空间

我怎么能真正知道这一切发生的顺序?更好的是,我怎么能在它发生时实际输出正在发生的顺序?

它不应该由编译器处理还是我只是误解了这个练习?一些小贴士真的很酷!

谢谢

4

1 回答 1

1

它不应该由编译器处理吗

更具体地说,链接器。

这是一个起点,完全按照约瑟夫曼斯菲尔德的建议行事。

#include <iostream>

int static_data;

int main()
{
    int stack_data;

    if ( &static_data < &stack_data )
    {
        std::cout << "Static data is in lower memory than the stack.";
    }
}
于 2015-04-03T20:02:38.403 回答