UB 求助
  • 板块学术版
  • 楼主Licykoc
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/2/16 21:07
  • 上次更新2023/10/24 00:37:45
查看原帖
UB 求助
175456
Licykoc楼主2023/2/16 21:07
#include <bits/stdc++.h>

class wdf {
  private:
    std::vector<int> a, b;
    int n;

  public:
    std::vector<int> c;
    wdf (const std::string &st) : n(st.length()), c(n + 1), b(n + 1) {
      std::cout << n << '\n';
    }
};

signed main() {
  std::string st;
  std::cin >> st;

  wdf arr(st);
}

上示代码在洛谷ide使用 c++20 无O2 运行,输入abbab,显示超出内存限制。但是如果改成下面的代码:

#include <bits/stdc++.h>

class wdf {
  private:
    std::vector<int> b;
    //去掉了 a 的定义
    int n;

  public:
    std::vector<int> c;
    wdf (const std::string &st) : n(st.length()), c(n + 1), b(n + 1) {
      std::cout << n << '\n';
    }
};

signed main() {
  std::string st;
  std::cin >> st;

  wdf arr(st);
}

却能正常运行。

这是为什么?

2023/2/16 21:07
加载中...