内存布局练习C ++

时间:2015-04-03 19:45:53

标签: c++ memory-layout

我正在阅读B.Stroustrup"编程原则和实践使用C ++"而且我正在尝试做大部分的练习。这个非常有趣,我不知道从哪里开始。

练习是:

  

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

17.4中的布局:

  

代码 - 代码的内存

     

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

     

免费商店 - 可用内存

     

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

我怎么能真正知道这一切发生的顺序是什么?更好的是,我怎么能在发生这种情况时实际输出订单呢?

它不应该由编译器处理,或者我只是误解了这个练习?很少有提示真的很酷!

由于

1 个答案:

答案 0 :(得分: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.";
    }
}