Heap corruption: What could the cause be?

c++, memory-management

Solution

Common scenarios include:

- Writing outside the allocated space of an array (`char *stuff = new char[10]; stuff[10] = 3;`)

- Casting to the wrong type

- Uninitialized pointers

- Typo error for -> and .

- Typo error when using * and & (or multiple of either)

[EDIT] From the comments, a few more:

- Mixing new [] and new with delete [] and delete

- Missing or incorrect copy-constructors

- Pointer pointing to garbage

- Calling delete multiple times on the same data

- Polymorphic baseclasses without virtual destructors

Problem

I am investigating a crash due to heap corruption. As this issue is non-trivial and involves analyzing the stack and dump results, I have decided to do a code review of files related to the crash. To be frank, I don't have in-depth knowledge of when the heap could be corrupted. I would appreciate if you could suggest scenarios which could lead to heap corruption. Platform: Windows XP Language: C++ Compiler: VC6

Original source

Related problems