Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 堆栈内存的起始地址是什么?_C++_Memory_Stack - Fatal编程技术网

C++ 堆栈内存的起始地址是什么?

C++ 堆栈内存的起始地址是什么?,c++,memory,stack,C++,Memory,Stack,嗨,我有一个面试问题,他们被问到堆栈内存的起始地址是什么。 我不知道地址,你能帮我找到堆栈内存的起始地址吗 谢谢和问候, Gunasekaran J 在C++中没有保证,甚至有一个栈。即使在实践中有一个,它在内存中的位置也会因编译器实现、平台、环境等而异 操作系统的一些特性,比如地址随机化,甚至会迫使地址在不同的运行中改变。您不能尝试以编程方式确定它,因为编译器可以修改/优化您的代码 基本上,回答这个问题的方法是解释堆栈是什么,它的大小是不同的,位置是不相关的。然后解释它的用途以及它通常是如何实

嗨,我有一个面试问题,他们被问到堆栈内存的起始地址是什么。 我不知道地址,你能帮我找到堆栈内存的起始地址吗

谢谢和问候,
Gunasekaran J

在C++中没有保证,甚至有一个栈。即使在实践中有一个,它在内存中的位置也会因编译器实现、平台、环境等而异

操作系统的一些特性,比如地址随机化,甚至会迫使地址在不同的运行中改变。您不能尝试以编程方式确定它,因为编译器可以修改/优化您的代码


基本上,回答这个问题的方法是解释堆栈是什么,它的大小是不同的,位置是不相关的。然后解释它的用途以及它通常是如何实现的。您甚至可以谈论早期/简单的CPU以及实现它的寄存器。

这取决于环境(处理器、操作系统等)。仅供参考:每个线程通常都有自己的堆栈。此外,ASLR可能会导致应用程序每次运行时都发生更改:在windows上,默认堆栈大小为1MB这是一个非常糟糕的面试问题。除非它们意味着在main()的开头添加一个变量并输出它的值。但是,这些概念仍然应该被抽象掉。当有更多有趣的事情发生时,我永远不会对我的候选人进行这方面的测验。这个问题没有答案。C++甚至不需要你有一个栈。即使它确实存在,也没有标准的方法来获取它的起始地址。我想这正是他们想要的答案。作为一名多次面试候选人的经理,如果我在面试中问某人这个问题,我会很高兴得到这个答案。这样一个问题的第二个动机是评估你和你面试的人之间的沟通。