Tutti gli heap memorizzano alcuni tipi di metadati dentro di sé. Quando si esegue un malloc o un file libero, l'heap eseguirà spesso alcune funzioni di archiviazione nell'heap. Se rileva qualcosa di totalmente inaspettato nei meta-dati, normalmente si blocca.
È improbabile che le normali operazioni di heap causino tali problemi, pertanto è probabile che il tuo programma ne sia la causa. Poiché il tuo programma ha accesso a tutta la memoria nel processo inclusi i metadati dell'heap, il tuo programma potrebbe aver sovrascritto accidentalmente alcuni dei meta-dati.
Una causa probabile è scrivere oltre la fine di un buffer allocato. Molto probabilmente questa scrittura sarà consentita ed è estremamente probabile che corrompa i metadati dell'heap. Quando viene rilevato dall'heap, il programma si interromperà normalmente.
Utilizzare valgrind. Te lo dirà. –