淡泊名利韬韬 2023-03-23 21:12 采纳率: 100%
浏览 22
已结题

ubuntu中C++编译报错

我在运行Cpp-Primer-Plus 6th书中例题5.2时编写了如下程序

#include <iostream>
#include <array>


int main(){
    using namespace std;

    array<long double, 100> fac;
    fac[0] = fac[1] = 1;
    for (int i = 2; i <= 100; i++){
        fac[i] = fac[i-1] * i;

    };
    cout << fac[99];
    return 0;

}

但运行后终端输出为


*** stack smashing detected ***: terminated

并且在VScode中报出了如下错误

img


请问如何解决?万分感谢

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-23 21:51
    关注

    数组大小是100,但for循环中i<=100,那么当i为100时, fac[100]越界了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月23日