gpt4 book ai didi

c - printf 命令导致段错误?

转载 作者:行者123 更新时间:2023-12-04 04:54:55 39 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Getting a stack overflow exception when declaring a large array

(8 个回答)


8年前关闭。




当我尝试初始化一个大的二维字符数组时,它工作得很好。但是当我添加一个简单的打印命令时,它给了我一个段错误。关于为什么会发生这种情况的任何想法?

#include<stdio.h>
int main(void)
{
printf("!");
char f[10000][10000];
}

它在没有 printf 命令的情况下工作正常,或者即使 printf 命令不打印任何内容(即“”)。如果我让它打印任何东西,它就会给出错误。

有什么帮助吗?

最佳答案

这可能是因为您超出了堆栈。您对 f 的定义占用 100MB 堆栈空间(10000x10000 字节),并且可能一旦您实际使用堆栈,系统就会发现堆栈和段错误上没有那么多空间。您可能会发现调用任何其他函数也是如此。

该大小的分配应通过 malloc() 完成。

   char *f= malloc(10000*10000);

// access two dimensionally (equivalent of f[5][8])
char z= f[5*10000 + 8];

关于c - printf 命令导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885016/

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