https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106739
Bug ID: 106739 Summary: runtime error coredump case on c++17/20 Product: gcc Version: 10.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: zhkefa at live dot cn CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at gcc dot gnu.org Target Milestone: --- code file test.cc: ============================= class A { public: A(int i): i(i){} int get() {return i;} private: int i{0}; }; void func() { typedef int (A::*f)(); f fs[] = {&A::get}; A *a = new A{1}; for (int i = 0; i < 1; ++i) { (a->*fs[i])(); } delete a; } int main() { func(); return 0; } =============== envirment: gcc10.4 g++ -fsanitize=address -fsanitize=undefined -std=c++17 test.cc ./a.out runtime error: index 4198816 out of bounds for type func[1] runtime error: load of address 0x7ffd97570f08 whith insufficient space for an object of type 'long int' if compile with -std=c++14 or -std=c++11, everything ok.