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

Reply via email to