Autore Topic: malloc()  (Letto 1031 volte)

SoraPride

  • Visitatore
malloc()
« il: Settembre 13, 2010, 02:04:17 pm »
Dato che con il mio computer sono masochista ho scritto un bel codice alloca-ram, questo:
Codice: [Seleziona]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    for(;;) printf("%d\n", (int)malloc(10240));
    return 0;
}
che dovrebbe allocare la memoria sessione natural durante, infatti, top alla mano, la ram occupata si impenna rapidamente, ma se decido di terminare il processo (quello masochista) la ram ritorna ai valori regolari.
 srpz srpz :wut: :wut: ma la memoria allocata nello heap non si può liberare solo via free(indirizzo_di_memoria)?

sgnablo

  • Visitatore
Re:malloc()
« Risposta #1 il: Settembre 13, 2010, 03:58:02 pm »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )

SoraPride

  • Visitatore
Re:malloc()
« Risposta #2 il: Settembre 13, 2010, 07:05:06 pm »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )
E il memory leak di X.org sotto driver intel ce lo siamo dimenticati?

tonywhite

  • Visitatore
Re:malloc()
« Risposta #3 il: Settembre 13, 2010, 10:25:37 pm »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )
E il memory leak di X.org sotto driver intel ce lo siamo dimenticati?

A Xorg piace il gelato al gusto intel  :asd:

AirPort

  • Visitatore
Re:malloc()
« Risposta #4 il: Settembre 13, 2010, 10:52:34 pm »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )
E il memory leak di X.org sotto driver intel ce lo siamo dimenticati?

A Xorg piace il gelato al gusto intel  :asd:

No, a Xorg piacerebbe il gusto intel se ubuntu per una volta si sforzasse a non fare casini coi driver :asd:

pandafunk

  • Visitatore
Re:malloc()
« Risposta #5 il: Settembre 14, 2010, 12:22:30 am »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )

Ricordo poco e niente di C... però quel pezzo di codice dovrebbe solamente stampare all'infinito la posizione del puntatore a partire dal quale viene allocata tot memoria che comunque non viene assegnata.

Credo che dovresti scrivere un test che nello stesso processo prima alloca $1 MB con questo sistema, e poi ne alloca altrettanti $2 ma li usa (tipo cambiandogli valore casualmente in un ciclo infinito).
Se dopo un po' di tempo $1 si svuota sgnablo ha ragione.

Sennò lo banniamo.
E dopo di lui banniamo te e me
 :rotfl:

sgnablo

  • Visitatore
Re:malloc()
« Risposta #6 il: Settembre 14, 2010, 09:51:17 am »
ma io non ho detto quello! :asd:

comunque, fate pure u_U

SoraPride

  • Visitatore
Re:malloc()
« Risposta #7 il: Settembre 16, 2010, 12:35:07 pm »
che io sappia, nei moderni sistemi operativi il sistema si accorge da solo che sarebbe il caso di liberare quella ram, una volta che il processo è chiuso. a prescindere dal fatto che il processo stesso liberi o meno la ram che ha utilizzato.

(non vorrei dire cazzate :asd: )

Ricordo poco e niente di C... però quel pezzo di codice dovrebbe solamente stampare all'infinito la posizione del puntatore a partire dal quale viene allocata tot memoria che comunque non viene assegnata.

Credo che dovresti scrivere un test che nello stesso processo prima alloca $1 MB con questo sistema, e poi ne alloca altrettanti $2 ma li usa (tipo cambiandogli valore casualmente in un ciclo infinito).
Se dopo un po' di tempo $1 si svuota sgnablo ha ragione.

Sennò lo banniamo.
E dopo di lui banniamo te e me
 :rotfl:
Questo succederebbe se al posto di malloc() ci fosse realloc(indirizzo), malloc alloca aree di memoria random ogni volta che è chiamato...