Если ваш код перехватывает указатель, используемый другим кодом, другой код может вызвать free
для недопустимого указателя.Скорее всего, вы обращаетесь к какой-то памяти, которой вы не владеете.
Есть много способов, которыми это может произойти, вот два распространенных:
1) Если вы объявляете массив как int f[7];
,последний элемент массива - f[6]
.Изменение f[7]
может повредить чужую память.
2) Если вы сохраните указатель на объект, размещенный в стеке, этот объект выходит из области видимости, а затем вы что-то изменяете с помощью этого указателя, вы можете повредитьчужая память.