Autodidatta ha scritto:
dipende dal compilatore
Queste sono regole che dipendono dalle specifiche del linguaggio, non dai compilatori (che possono seguirle o meno, ma è un altro discorso).
allocassi una stringa in memoria dinamica facendo una new e non una new[], potessi fare delete e non delete[]
L'errore che fai è che consideri stringa questa
char *s = new char;
e invece è solo un puntatore ad un singolo carattere, che deallochi con una semplice delete.
Se pensi di inserire una stringa con
cin >> s;
hai un crash (sempre per quelle regole semplici).
Se, invece, scrivi
char *s = new char[100];
allora stai allocando una stringa (array di char) e solo allora utilizzerai delete[]
Per questo dicevo che è semplice ...
quindi c'è contraddizione
Nessuna contraddizione ...