c++ - 二维字符数组的全局和局部声明

标签 c++ c arrays data-structures multidimensional-array

我在 codechef 上提交练习题时遇到了一个非常奇怪的问题。解决方案“具有二维字符数组的全局声明”被接受,而“在主函数内声明”的解决方案被拒绝为错误答案。

下面是解决方案的链接。

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

PS1:我没有在主函数外使用二维字符数组。
PS2:我说的是数组“char boardString[1000][1000]”;

最佳答案

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

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

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

关于c++ - 二维字符数组的全局和局部声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152036/

相关文章:

arrays - 我尝试获取数组长度有什么问题?

c++ - 什么时候在网络编程中使用ntohs函数?

c - Makefile 说明 : files that includes headers which includes another header

php - PHP 的 array() 的缩写

C - 传递 message_t 参数

c - 查找数组的大小和单词洗牌

javascript - 以base64解码字符串并加载为数组JS

c++ - 类型、性质和含义(什么是) "#call"in c++

c++ - 如何在 Windows 程序中使正方形旋转?

c++ - 为什么 QObjectIterator::get_value_ref() 没有在我的 QtLua 源代码分发中实现?