正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-S 2024 第一轮真题 › 第3题
CSP-S 2024 第一轮 第3题:在C++中,以下哪个函数调用会造成栈溢出?(
题目
在 C++ 中,以下哪个函数调用会造成栈溢出?( )
选项
- A. int foo() { return 0; }
- B. int bar() { int x = 1; return x; }
- C. void baz() { int a[1000]; baz(); }
- D. void qux() { return; }
答案
C
题解
答案是 C。
baz() 会不断调用自己,却没有终止条件:
``cpp void baz() { int a[1000]; baz(); } ``
通常,每次函数调用都会占用栈空间。递归调用一直不结束,栈空间就会不断累积,最终导致栈溢出。局部数组 a 还可能加快栈空间的消耗。
A、B、D 都会正常返回,不存在无限递归。
记住:递归必须有终止条件。(本题按通常不考虑编译器优化的情况判断。)
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号