Cosa succede quando si ha il seguente codice:C++ puntatore portata
void makeItHappen()
{
char* text = "Hello, world";
}
Does text
uscire di portata e ottenere automaticamente cancellati o lo fa rimanere nella memoria?
E per quanto riguarda il seguente esempio:
class SomeClass
{
public:
SomeClass();
~SomeClass();
};
SomeClass::SomeClass() { }
SomeClass::~SomeClass()
{
std::cout << "Destroyed?" << std::endl;
}
int main()
{
SomeClass* someClass = new SomeClass();
return 0;
} // What happend to someClass?
fa la stessa cosa avviene qui?
Grazie!
@Kos: questo significa che il numero 2 di 'int x = 2;' esiste anche attraverso l'intera esecuzione del programma? –
La differenza è che il numero 2 non ha bisogno di avere un indirizzo in memoria, e la stringa lo fa (come viene puntato dal puntatore). * (Questo numero 2 esiste in qualche parte nella sezione di codice della tua memoria, a cui non hai mai bisogno di accedere direttamente, perché è, beh, il codice, non i dati.) * – Kos
@Kos Grazie per un'ottima risposta ! Ma, che senso ha mantenere "Hello, world" 'in memoria? – Kevin