gpt4 book ai didi

c++ - 如何在 C/C++ 中运行阿克曼函数而不出错?

转载 作者:行者123 更新时间:2023-11-30 20:41:57 24 4
gpt4 key购买 nike

那么如何运行阿克曼函数而不遇到 Segmentation fault (core dumped)由于我的程序尝试访问/扩展它无法访问的内存而出现错误?也许将 GCC 的内存限制扩展到 256MB?当内存使用量约为 9MB 时,会导致此错误。我运行 Manjaro Linux

代码:

#include<stdio.h>

int ack (int m, int n) {

if (m == 0)
return n + 1;
else if (n == 0)
return ack(m - 1, 1);
else
return ack(m - 1, ack(m, n - 1));
}

int main() {

int i, j;

for (i = 0; i <= 5; i++)
for (j = 0; j <=5; j++)
printf("Result for ackermann(%d, %d) is: %d\n",i, j, ack(i, j));

return 0;
}

添加了用于重现结果的代码

最佳答案

这几乎肯定不是“内存使用过多”问题。请注意,GCC 没有内存限制。如果你有真正的限制,那是你的操作系统的一个功能。在 Mac OS 或 UNIX 变体之一下,请参阅 ulimit 命令。我不知道你在 Windows 下做什么。

如果您遇到段错误,那是因为您正在尝试访问尚未分配的内存。这很可能是由于以下三个条件之一造成的:

  • 取消引用空指针
  • 取消引用完全未初始化的指针
  • 取消引用存储在已重用的内存中的指针(可以指出谁知道在哪里)

您的核心文件应该告诉您哪一行代码导致了段错误。这应该可以帮助您追踪发生这种情况的原因。

关于c++ - 如何在 C/C++ 中运行阿克曼函数而不出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650268/

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