Per il piacere di questa domanda visualizzerò la memoria come una semplice matrice di byte e parlerò della memoria heap perché è possibile allocarla dinamicamente.Cosa succede esattamente quando si cancella my_object; viene eseguito? Tutta l'altra memoria è spostata a sinistra di sizeof (MyClass)?
Diciamo che sto creando un'istanza di alcune classi e creando un oggetto sull'heap in cui è già stata allocata memoria. Quindi, dopo aver creato l'oggetto, alloco ancora un po 'di memoria (magari istanziando un'altra classe). Ciò implica l'utilizzo delle parole chiave new
e delete
, ovviamente.
La memoria appare come segue:
... byte byte my_object ... my_object byte byte ...
Che cosa succede esattamente quando viene eseguito delete my_object;
? Tutta l'altra memoria è spostata a sinistra di sizeof(MyClass)
? Se è così, da chi? Il sistema operativo? Quindi cosa succede quando non ci sono sistemi operativi per fornire memoria virtuale?
Grazie per la modifica Robert, ora è più chiaro. – corazza