C ++ I membri di un puntatore di classe sono automaticamente nell'heap?

3

Diciamo che abbiamo struct Vector2i { int x = 0, int y = 0 };

E crea un puntatore ad esso tramite Vector2i* pointer = new Vector2i; Dove verrebbero memorizzati int x e int y ? Mucchio o pila?

Tutti i membri di un'istanza un puntatore puntano automaticamente sullo heap perché la nave è? I membri delle navi create nello stack sono automaticamente nello stack? Che dire dei puntatori all'interno di una classe che è stata creata nello stack?

Grazie in anticipo e sentiti libero di indicarmi gli articoli che fanno riferimento a questo argomento (la mia terminologia è probabilmente sbagliata)

    
posta Farrrbi 14.12.2017 - 23:32
fonte

1 risposta

6

Se la memoria della struttura è nell'heap, lo sono anche i suoi membri, poiché la struttura ei suoi membri non sono blocchi separati di memoria. Infatti, la struttura non esiste nemmeno per dirla in un modo, solo una regione contigua di memoria che rappresenta e memorizza i campi dati della struttura. Ovviamente se si ha un puntatore a una struttura, allora il puntatore risiede nel proprio chunk separato di memoria, ma la memoria allocata per la struct sarà in genere un blocco indivisibile di memoria.

    
risposta data 15.12.2017 - 00:40
fonte

Leggi altre domande sui tag