下面的代码中存在数组越界问题和缺失的 delete []。
使用以下选项编译代码不会触发任何错误:
g++ -std=c++2a -Wall -pedantic -fstack-protector-all test.cpp
#include <iostream>
class Base {
public:
Base() { std::cout << "Base()\n"; }
~Base() { std::cout << "~Base()\n"; }
int m_counter;
};
class Derived: public Base {
public:
Derived() { std::cout << "Derived()\n"; }
~Derived() { std::cout << "~Derived()\n"; }
};
int main() {
Base* b = new Derived[10];
std::cout << b[10].m_counter << '\n';
delete b;
return 0;
}
关于我在这里可能遗漏了什么的任何指示?
最佳答案
我认为您正在寻找 -fsanitize=bounds
关于c++ - 我使用什么 C++ 编译器选项来触发数组越界错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052273/