0

有什么警告信号表明我的堆栈内存空间膨胀,我应该从什么时候开始使用堆内存?而且,处理器之间是否存在差异,我正在考虑堆栈大小限制?

4

3 回答 3

2

可以在链接期间指定堆栈的大小。这样做的确切方法取决于您的工具链。除了 32 位与 64 位处理器之外,我不知道任何基于处理器的堆栈大小限制。

至于是否使用过多,没有正确或错误的答案,这是一个设计问题,取决于您的要求。由于堆栈大小是在链接期间设置的,因此它会比使用堆更严格地限制您的最大数据,一般来说无论如何。另一方面,堆栈分配和释放比使用堆更快。

于 2012-07-09T13:43:56.390 回答
0

正如许多其他人所说,堆栈的大小可以通过命令行选项控制。

关于堆使用,我倾向于坚持这一点:

如果我可以在程序开始时动态分配类对象,我会这样做。我倾向于不在运行中动态分配或删除动态分配的对象,因为它会分散内存。

原始对象通常保存在堆栈中,因为它们的大小可以忽略不计。

于 2012-07-09T13:59:11.143 回答
0

您通常可以使用编译器和链接器的命令行选项来控制堆栈的大小。

您是否遇到任何堆栈溢出(错误,而不是站点)?这将是一个很大的线索,表明你正在推动你的筹码极限。

我认为您需要首先弄清楚您的应用程序中的默认堆栈有多大,然后考虑您要填充什么。

于 2012-07-09T13:45:46.643 回答