首页 文章

2D char数组的全局和局部声明

提问于
浏览
1

当我在codechef上提交练习题时,我有一个非常奇怪的问题 . 解决方案“具有2D char数组的全局声明”被接受,而具有“主要功能内的声明”的解决方案被拒绝作为错误答案 .

以下是解决方案的链接 .

1)具有全球声明:http://www.codechef.com/viewsolution/1138654
2)在main()中有Delaration:http://www.codechef.com/viewsolution/1138660

PS1:我没有在主函数之外使用2D char数组 .
PS2:我在谈论数组" char boardString[1000][1000] ";

2 回答

  • 1

    因为你可能用完了堆栈空间 .

    当您全局声明一个数组时,它会在data / Bss段中分配(注意这是实现细节)
    而当你在 main() 中声明一个数组时,它会在堆栈上本地创建(同样是一个实现细节)

    由于您要分配的数组很大( 1000 X 10000 ),因此可能会耗尽堆栈空间 .
    Codechef足够智能,可以检测到这个问题,因此它拒绝使用 main() 中的数组代码作为错误答案 .

  • 3

    正如Als正确评论该问题很可能是由于堆栈空间限制 . 如果你更愿意将你的变量封装在 main 中但是不在堆栈中分配它,你只需要声明它 static ,那里 .

相关问题