Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    dove vengono salvate le variabili in C

    Ragazzi corregetemi se sbaglio, le varriabili in C si appoggiano sullo stack mentre i puntatori sull'heap?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    il puntatore è una variabile anch'essa memorizzata staticamente.
    La memoria puntata se allocata dinamicamente si trova nella "heap".

  3. #3
    Quindi riepilogando tutte le variabili vengono inserite nello stack. L'allocazione dei puntatori invece nell'heap, giusto?

  4. #4
    La tua affermazione è ancora quantomeno imprecisa: un puntatore può benissimo puntare ad una variabile che si trova sullo stack: una roba di questo tipo è perfettamente lecita (nonché molto usata):
    codice:
    int a;
    int * ptr=&a;
    In linea generale, la questione funziona così: le variabili locali non statiche (puntatori compresi, che sono normalissime variabili) sono allocate sullo stack, così che all'uscita dallo scope corrente (=modifica dello stack pointer) vengono "deallocate" automaticamente.
    Le variabili globali e le variabili locali static (che dal punto di vista del compilatore sono praticamente la stessa roba) sono situate in un'area di memoria apposita, allocata all'avvio del programma e deallocata alla fine; se si tratta di variabili inizializzate spesso essa è un'area del file eseguibile mappata in memoria in modalità copy-on-write.
    La memoria allocata dinamicamente (che c'entra ben poco con i puntatori, usati semplicemente per poterci accedere) è solitamente allocata nell'heap.

    Per inciso, per quanto concerne lo standard C lo stack e l'heap potrebbero benissimo non esistere, sono semplicemente il modo più comunemente usato di implementare la semantica delle variabili locali e dell'allocazione dinamica.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.