我正在阅读B.Stroustrup"编程原则和实践使用C ++"而且我正在尝试做大部分的练习。这个非常有趣,我不知道从哪里开始。
练习是:
考虑17.4中的布局。编写一个程序,告诉静态存储,堆栈和空闲存储在内存中的排列顺序。堆栈在哪个方向上增长:向上朝向更高地址或向下朝向更低地址?
17.4中的布局:
代码 - 代码的内存
静态数据 - 全局变量的空间
免费商店 - 可用内存
堆栈 - 用于调用函数的内存以及用于其参数和局部变量的空间
我怎么能真正知道这一切发生的顺序是什么?更好的是,我怎么能在发生这种情况时实际输出订单呢?
它不应该由编译器处理,或者我只是误解了这个练习?很少有提示真的很酷!
由于
答案 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.";
}
}