gpt4 book ai didi

在 C 中检查可用的堆栈大小

转载 作者:太空狗 更新时间:2023-10-29 16:21:41 25 4
gpt4 key购买 nike

我将 MinGW 与 GCC 3.4.5 (mingw-special vista r3) 一起使用。

我的 C 应用程序使用了很多堆栈,所以我想知道是否有任何方法可以通过编程告诉剩余多少堆栈,这样我就可以在发现即将用完时干净地处理这种情况。

如果不是,您还有什么其他方法可以解决可能用完堆栈空间的问题?

我不知道我将从什么大小的堆栈开始,因此还需要以编程方式确定它。

最佳答案

getrusage 函数为您提供当前使用情况。 (参见 man getrusage)。

Linux 中的 getrlimit 将通过 RLIMIT_STACK 参数帮助获取堆栈大小。

#include <sys/resource.h>
int main (void)
{
struct rlimit limit;

getrlimit (RLIMIT_STACK, &limit);
printf ("\nStack Limit = %ld and %ld max\n", limit.rlim_cur, limit.rlim_max);
}

请看man getrlimit .可以通过 ulimit -sulimit -a 堆栈大小行获取相同的信息。还可以查看允许设置限制的 setrlimit 函数。但是正如其他答案中提到的那样,如果您需要调整堆栈,那么您可能应该重新考虑您的设计。如果你想要一个大数组,为什么不从堆中取出内存?

关于在 C 中检查可用的堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com