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