Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Utilizzare memoria heap o stack in C

    Salve.
    Vorrei capire quando utilizzare la memoria heap o stack in C.
    Quale devo usare una o l'altra?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Le variabili locali usano lo stack. Se devi usare grandi quantità di memoria usa le funzioni di allocazione come malloc, calloc e l'heap
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Scusa Oregon, quando intendi grandi quantità di memoria cosa intendi? tipo array? Puoi farmi un esempio o rimandarmi a qualche sito che specifica?
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Ironmax Visualizza il messaggio
    Scusa Oregon, quando intendi grandi quantità di memoria cosa intendi? tipo array? Puoi farmi un esempio o rimandarmi a qualche sito che specifica?
    Grazie.
    Sì, intendo array, ovviamente di una certa grandezza.

    Non ci sono esempi da fare né siti che ne parlano in particolare ... sono concetti di base, che trovi nei primi capitoli dei libri di programmazione C.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Posso fare queste affermazioni?:
    1 Il metodo main e risiede nella stack e accede al heap attraverso le funzioni malloc(), calloc(), free(), realloc().
    2 Il puntatore è un elemento che può puntare sia a variabile della stack che del heap

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Ironmax Visualizza il messaggio
    Posso fare queste affermazioni?:
    1 Il metodo main e risiede nella stack e accede al heap attraverso le funzioni malloc(), calloc(), free(), realloc().
    Questa affermazione devi esprimerla meglio in italiano perché non si capisce.

    main non è un metodo ma una funzione, non è main che risiede nello stack. Sono le variabili e array locali (a qualsiasi funzione, non solo per il main) che risiedono nello stack. L'heap si alloca/libera (tutte le funzioni e non solo il main lo possono fare) tramite le malloc/free ...

    2 Il puntatore è un elemento che può puntare sia a variabile della stack che del heap
    Questo è corretto. Un puntatore punta a memoria e sia stack che heap sono strutture della memoria.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Oltre alle dimensioni (lo stack è grande in tutto qualche MB su sistemi operativi "normali", e se superi il limite il programma va in crash) c'è un'altra differenza importante: lo stack "forza" un determinato lifetime (ovvero, le variabili che dichiari locali ad una funzione esistono solo finché questa non ritorna), mentre l'allocazione sull'heap fornisce memoria che decidi tu quando deallocare. Questo per tante strutture dati (ad esempio, liste linkate) o in generale quando devi allocare dati che devono sopravvivere più a lungo della funzione corrente è fondamentale.
    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.