| Issue |
183255
|
| Summary |
[Clang-Cl] Clang 22 will make heap corrupted when doing `delete []`
|
| Labels |
clang
|
| Assignees |
|
| Reporter |
QianNangong
|
I'm using Visual Studio 2026 18.3.2 and LLVM 22.1.0.
inc.h
```cpp
#pragma once
class Class1 {
public:
Class1() = default;
virtual ~Class1() = default;
};
class Class2 : public Class1 {
public:
Class2() = default;
virtual ~Class2() = default;
};
class Class3 : public Class2 {
public:
Class3();
virtual ~Class3();
};
```
impl.cpp
```cpp
#include "inc.h"
Class3::Class3() {}
Class3::~Class3() {}
```
main.cpp
```cpp
#include "inc.h"
int main() {
Class3* p1 = new Class3;
delete p1; // <- this is fine
Class3* p2 = new Class3[1];
delete [] p2; // <- this will trigger "Invalid address specified to RtlValidateHeap" assertion in Debug mode and crash in Release mode.
return 0;
}
```
Whether I put the constructor or the destructor of `Class3` inside `inc.h`, it won't crash. Only happen on both constructor and destructor in a standalone `.cpp` file.
This doesn't occur on Clang 21 and Clang 20 and no custom compiler flags being used.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs