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

    [C] differenze tra stringhe

    Ragazzi c'è qualche differenza tra questi due stralci di codice:

    codice:
    char stringa[100];
    e
    codice:
    char *stringa = malloc(sizeof (char) * 100);
    ?

  2. #2

    Re: [C] differenze tra stringhe

    Originariamente inviato da sys14
    Ragazzi c'è qualche differenza tra questi due stralci di codice:

    codice:
    char stringa[100];
    e
    codice:
    char *stringa = malloc(sizeof (char) * 100);
    ?
    la prima è un allocazione statica è viene effettuata nello stack
    la seconda è un allocazione dinamica, che viene effettuata nell'heap

    in internet trovi molte informazioni in merito. Per citare alcune delle più importanti, lo stack è molto limitato (di solito si parla di alcuni megabyte) mentre l'heap no (virtualmente potrebbe occupare grossa parte della ram)

    Puoi fare qualche test cercando di allocare staticamente vettori molto molto grandi. Oltre un certo limite otterrai un errore di stack overflow, dovuto proprio al fatto che quel vettore occupa un quantitativo di memoria troppo grosso per essere allocato nello stack.

    In aggiunta se quella chiamata fosse stata effettuata in una funzione, un eventuale puntatore ad una stringa sarebbe passabile tra funzioni se la memoria è allocata dinamicamente, mentre non lo sarebbe se allocata staticamente, in quanto quella porzione di stack "non è più raggiungibile" al termine della funzione.

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.