Fammi provare ad elaborarlo.
Frame stack: quando eseguiamo una funzione, crea uno stack in cui risiedono tutte le variabili e le istruzioni locali.
E Puntatore intelligente: un puntatore intelligente come std::unique_ptr consente di modificare la proprietà dell'oggetto all'interno del puntatore intelligente.
Ora la mia confusione è: supponiamo di passare un unique_ptr da una funzione sorgente a una funzione target , il rvalue sarà assegnato al puntatore target da% codice%. Ora se la funzione termina, il frame dello stack verrà deallocato. Quindi std::move nella funzione obiettivo sarà un puntatore pendente, poiché unique_ptr punta alla stessa posizione di memoria che si trova nello stack frame della funzione sorgente?
Una cosa che ho pensato è, poiché la durata della funzione target sarà terminata prima della vita della funzione sorgente. In modo che non causi tali effetti collaterali. Ma in applicazioni più complesse con ambiente multi-thread, come va? O di cosa dobbiamo occuparci?