繁体   English   中英

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

[英]Global and local declaration of 2D char array

当我在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]”;

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

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

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

正如Als正确评论该问题很可能是由于堆栈空间限制。 如果您希望将变量封装在main而不是将其分配到堆栈上,则只需将其声明为static

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM