ho scoperto la classica nuova eliminare l'errore/mancata corrispondenza nel nostro codice di base come segue:Quanto è grave l'errore di disallineamento dell'operatore new/delete?
char *foo = new char[10];
// do something
delete foo; // instead of delete[] foo;
quanto grave è questo? Provoca una perdita di memoria o un errore? Quali sono le conseguenze. Abbiamo alcuni problemi di memoria, ma questo non sembra abbastanza serio per spiegare tutti i nostri sintomi (heap corruzione ecc)
EDIT: domande in più per la chiarezza
Ha solo liberare il primo membro della matrice? oppure
Fa in modo che il sistema perda traccia dell'array? o
La memoria corrotta è in qualche modo?
Grazie per la risposta rapida. Quindi davvero indefinito? Come in, nessuno può dire cosa potrebbe accadere? Se è così, potrebbe spiegare le nostre osservazioni. –
@AndrewS. Anzi indefinito. Mi ricordo che "ha funzionato" in Visual Studio per esempio. – cnicutar
Non definito, ovvero dipende dal compilatore/sistema operativo. –