A proposito del Memory Leak

di il
9 risposte

A proposito del Memory Leak

Ciao a tutti.

Volevo sapere se con il S.O. Vista o qualsiasi altro, si può incorrere nel problema della perdita di memoria, provando degli esercizi in C++. Cioè, una volta chiuso il progamma (Visual C++ 2008),
non viene liberata automaticamente la memoria?

Grazie a chiunque risponderà.

9 Risposte

  • Re: A proposito del Memory Leak

    In windows la memoria allocata da un programma è sempre liberata al termine del programma stesso. Ovviamente questo NON AUTORIZZA ( ) il programmatore a una gestione allegra della memoria stessa. Insomma la devi liberare tu.
  • Re: A proposito del Memory Leak

    Ciao Shodan.

    Non è che mi volevo "scansare" il lavoro di deallocazione della memoria, ho fatto questa domanda, perchè essendo alle prime armi con i puntatori ecc, mi sono preoccupato per qualche
    danno che avrei potuto eventualmente fare alla memoria del pc .
  • Re: A proposito del Memory Leak

    No, nessun danno. Non siamo più ai tempi di Win9x e al suo modello di gestione memoria dove tutto veniva messo a Ring0. Oggi come oggi (per Windows dai tempi di NT 3.51) ogni SO decente mainstream prevede che ogni processo sia "schermato" da eventuali puntatori "selvaggi" e giri a Ring3. In altre parole un crash di un programma non può mandare in tilt l'intero sistema operativo.
    Questo in user mode.

    Se si inizia a scrivere qualche driver kernel che deve girare a Ring0, ogni errore di puntatore è pagato a caro prezzo.
  • Re: A proposito del Memory Leak

    Grazie Shodan.

    Mi spieghi in parole povere, se ti va, cos'è il Ring ?
  • Re: A proposito del Memory Leak

    Immagina una struttura a cipolla o meglio un bersaglio ad anelli via via crescenti.
    Il Ring0 è il centro del bersaglio, quello più a stretto contatto con il processore. Li dentro vengono eseguiti tutti e soltanto i kernel driver del sistema operativo.

    Dal 80386 (primo processore Intel 32 bit) sono stati aggiunti altri anelli di cui Windows (almeno) usa il Ring3. In Ring3 girano tutte le normali applicazioni utente, dal compilatore ai browser etc. La modalità a Ring3 è detta "protetta", mentre la modalità Ring0 è la modalità "reale". Oggigiorno pasticciare in modalità User Mode (protetta) è brutto ma non fa danni (al massimo un voto 4-- ).
    Se pasticci in modalità reale (ma non è il tuo caso) esplode tutto.

    La pessima fama di Win9x deriva proprio dal fatto che in tale famiglia di sistemi operativi tutto (grafica compresa) era eseguito a Ring0 (per questioni prestazionali) per cui il primo puntatore sporco che passava mandava in tilt il PC.

    Questo il succo del discorso.
  • Re: A proposito del Memory Leak

    Grazie ancora Shodan.

    Sei stato chiarissimo. Segno questo, che conosci benissimo l'argomento.
    Ciao.
  • Re: A proposito del Memory Leak

    Più che altro ho vissuto la transizione MSDOS/ Win311 -> Win9x e nelle riviste che prendevo all'epoca erano spiegate queste cose .
  • Re: A proposito del Memory Leak

    Diciamo un po' più precisamente che la modalità reale non si deve associare al Ring-3 nè quella protetta al Ring-0. In realtà solo nella modalità protetta si parla di Ring, non in quella reale.

    Semmai parleremo di "User mode" (R3) o "Kernel mode" (R0) per indicare il livello di privilegio del software che gira sul sistema comunque in modalità protetta.
    A volte si usa proprio la terminologia "software che gira a Ring-0" intendendo proprio la parte "kernel" o "driver" del sistema.

    La scelta dei sistemi operativi di usare solamente Ring-3 e Ring-0 è stata fortemente influenzata (diciamo così) dal fatto che le istruzioni SYSENTER/SYSEXIT lavorano proprio effettuando veloci transizioni tra questi due livelli.
  • Re: A proposito del Memory Leak

    oregon ha scritto:


    Diciamo un po' più precisamente che la modalità reale non si deve associare al Ring-3 nè quella protetta al Ring-0. In realtà solo nella modalità protetta si parla di Ring, non in quella reale.
    In effetti era un dubbio che ho sempre avuto. E pensandoci meglio non avrei proprio dovuto averlo.
    Grazie della precisazione.
Devi accedere o registrarti per scrivere nel forum
9 risposte