Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    Nello stack la memoria viene liberata alla fine della funzione mentre l'heap è gestito dalla garbage collection oppure tramite l'interfaccia IDisposable, C# gestisce ogni oggetto come una referenza da aggiungere all'heap mentre gli structs(anche primitivi) e gli enum valori da inserire nello stack.
    Quindi con l'operatore new decido io quando liberare la memoria (a seconda di dove e quando mi serve) usando ovviamente l'operatore delete. Mentre con la stack lo decide la fine dl blocco (tranne che con le variabili static, ma quella è un'altra cosa).

    Giusto od ho sbagliato qualcosa?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da Pirand92 Visualizza il messaggio
    Quindi con l'operatore new decido io quando liberare la memoria (a seconda di dove e quando mi serve) usando ovviamente l'operatore delete. Mentre con la stack lo decide la fine dl blocco (tranne che con le variabili static, ma quella è un'altra cosa).

    Giusto od ho sbagliato qualcosa?
    Ti stai confondendo col c++, in c# non esiste l'operatore delete ma viene gestito dalla garbage collection e tramite Dispose() puoi liberare delle risorse(Bitmaps,Sockets,etc...) mentre con GC.Collect() puoi forzare questo processo. In c# di solito non ricevi mai la memoria direttamente allocata da new ma quella che ti passa il GC o il metodo nativo, ad esempio se allochi tramite Marshal dovrai liberare il puntatore sempre tramite Marshal, in pratica non hai mai un accesso diretto alla memoria perché sei in un ambiente managed(con unsafe al massimo puoi gestire i puntatori).

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