gpt4 book ai didi

检查 C 中可用的堆栈大小

转载 作者:行者123 更新时间:2023-11-30 17:27:32 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/26336139/

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