Runtime Error: HEAP CORRUPTION DETECTED: before Normal block

Description:

This type of error is generated by writing to an element of the array outside of the allocated range of indices. Typically, writing to an element outside of the index range corrupts the heap.

If you make an array of 3, for example, and then try to write data to the element at index 3 (one index past the last item in the array), such as this:

#include <iostream>

int main() {

    double* dpArray = new double[3];
    dpArray[0] = 3.2;
    dpArray[1] = 4.5;
    dpArray[2] = 10.2;

    dpArray[3] = 11.3;

    delete [] dpArray;

    std::cin.get();

    return 0;
}

When you run this program in Debug mode (menu Debug -> Start Debugging), you will receive this error:

This error is a little more helpful; it says that you may have a bug in your program. What it doesn't tell you is that, in this case, it's because you tried to access a memory location outside of the valid array. The 3rd index of the array is outside of the array, whose indices only go from 0 to 2 (i.e., an array size of 3).

To fix this, make sure not to go past the largest index in your array. This type of problem can easily happen in a for or while loop while incrementing the index and not having a valid upper bound.