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

    [C/C++] Domanda da novellino.

    Scusate la domanda banale ma ho alcuni dubbi.

    Poniamo la funzione

    Codice PHP:
    charToString() {
         static 
    char riga[128];
         return 
    riga;

    Mi pare di capire che "riga", in quando dichiarata come "static", rimane allocata alche dopo il termine della funzione.
    Se io invoco n volte quella funzione "riga" sarà sempre allocata nello stesso posto oppure sarà allocata in punti diversi della memoria con spreco di ram?

    Grazie mille, Denis.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Se fosse allocata ad ogni chiamata, non sarebbe piu' static ...

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C/C++] Domanda da novellino.

    Originariamente inviato da denis76
    Se io invoco n volte quella funzione "riga" sarà sempre allocata nello stesso posto oppure sarà allocata in punti diversi della memoria con spreco di ram?
    Viene allocata 1 volta sola all'inizio del programma e ad 1 indirizzo che rimane fisso per tutta la durata del programma. Però quella variabile è visibile solo all'interno della funzione.

    Il problema dell'utilizzo di una variabile static in quel modo è che la funzione non può essere usata in maniera "concorrente". Non deve essere chiamata contemporaneamente da più thread, non è "rientrante" e il valore ritornato deve essere usato "subito".

    Mi spiego meglio:
    codice:
    char *a, *b;
    
    a = ToString ();
    b = ToString ();
    In questo caso, a e b puntano (ovviamente) alla stessa locazione, ma il contenuto è solo quello impostato dall'ultima chiamata (dipende ovviamente da cosa ci scrive la funzione!).

    Se usare o meno una variabile static in quel modo, dipende da te e da cosa devi fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    [C/C++] Domanda da novellino.
    Usa titoli più significativi, che descrivano il contenuto della domanda, non il livello (la cui valutazione è peraltro soggettiva).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    public:
    Grazie mille, sei stato molto chiaro.

    private:
    Appunto mentale: ricordarsi di definire titoli in modo più significatico altrimenti il Moderatore si in....a!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.