Обычно это означает, что вы записали (или, возможно, прочитали) память, на которую у вас нет разрешения.Либо это просто недействительная память, либо (если платформа поддерживает такую концепцию), она находится за пределами вашей памяти.
Распространенной причиной этого является освобождение указателя, но затем его повторное использование.
Foo * pFoo = new Foo();
pFoo->Bar(); // should be fine.
delete pFoo; // pFoo now points to memory that may or may not still be an actual Foo.
pFoo->Bar(); // undefined behavior.