/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hukommelse til rådighed? Hvordan??
Fra : Hans Christiansen


Dato : 02-10-07 10:54

Hej,

Jeg har et C-program hvor jeg har brug for løbende at holde øje med hvor
meget hukommelse
der er til rådighed i procent.

Formålet med det er, at bestemme hvornår funktioner, som bruger malloc, kan
kaldes. Desuden
skal oplysningen også vises på et web-interface til softwaren.

Jeg kunne selvfølgelig bare lave check på returværdien for en malloc alle de
steder
der bliver brugt malloc, men det er i dette tilfælde ret omfattende.

Metoden skal virke både når jeg kompilerer på en Linux-maskine og en
Windows-maskine.

Tak på forhånd.



 
 
Arne Vajhøj (02-10-2007)
Kommentar
Fra : Arne Vajhøj


Dato : 02-10-07 15:22

Hans Christiansen wrote:
> Jeg har et C-program hvor jeg har brug for løbende at holde øje med hvor
> meget hukommelse
> der er til rådighed i procent.
>
> Formålet med det er, at bestemme hvornår funktioner, som bruger malloc, kan
> kaldes. Desuden
> skal oplysningen også vises på et web-interface til softwaren.
>
> Jeg kunne selvfølgelig bare lave check på returværdien for en malloc alle de
> steder
> der bliver brugt malloc, men det er i dette tilfælde ret omfattende.
>
> Metoden skal virke både når jeg kompilerer på en Linux-maskine og en
> Windows-maskine.

1) Du skal nok definere problemet lidt mere præcist.

Ønsker du at finde ud af hvormange procent af dit programs
virtuelle adresserum der er i brug ?

Eller ?

2) Næsten uanset hvad bliver du nok nødt til at #ifdef'e med forskellig
kode for Windows og Linux.

Arne

Hans Christiansen (02-10-2007)
Kommentar
Fra : Hans Christiansen


Dato : 02-10-07 20:21

>
> 1) Du skal nok definere problemet lidt mere præcist.
>
> Ønsker du at finde ud af hvormange procent af dit programs
> virtuelle adresserum der er i brug ?
>
> Eller ?

Jeg vil gerne vide hvor mange procent, af den hukommelse der anvendes
ifm. malloc, der er fri


> 2) Næsten uanset hvad bliver du nok nødt til at #ifdef'e med forskellig
> kode for Windows og Linux.

ok



Anders J. Munch (02-10-2007)
Kommentar
Fra : Anders J. Munch


Dato : 02-10-07 19:40

Hans Christiansen wrote:
> Hej,
>
> Jeg har et C-program hvor jeg har brug for løbende at holde øje med hvor
> meget hukommelse
> der er til rådighed i procent.
>
> Formålet med det er, at bestemme hvornår funktioner, som bruger malloc, kan
> kaldes. Desuden
> skal oplysningen også vises på et web-interface til softwaren.
>
> Jeg kunne selvfølgelig bare lave check på returværdien for en malloc alle de
> steder
> der bliver brugt malloc, men det er i dette tilfælde ret omfattende.

Du er da nødt til at checke mallocs returværdi for NULL. Alt andet er
uprofessionelt.

For ledig hukommelse vil jeg foreslå du kigger på brk og ulimit på linux, måske
/proc/meminfo omend det nok kræver root, og på MSWin GetPerformanceInfo,
GetProcessMemoryInfo og GlobalMemoryStatusEx.

mvh. Anders

Ukendt (06-10-2007)
Kommentar
Fra : Ukendt


Dato : 06-10-07 10:01

>
> Formålet med det er, at bestemme hvornår funktioner, som bruger malloc,
> kan kaldes. Desuden
> skal oplysningen også vises på et web-interface til softwaren.
>

Er situationen den, at hvis ikke alle malloc's går godt, så vil sofwaren på
et tidspunkt skrive ind i en null pointer?
Så er dette noget træls brandslukning, (men der skuppes de fleste af os vel
ud en gang i mellem ?)

Funderer lidt over hvordan man vha fri hukommelse et bestemt øjeblik kan
garantere at de efterfølgende mallocs går godt.
Kan der ikke have været nogen andre tasks forbi og låne lidt hukommelse i
mellemtiden ?

Iøvrigt, en milion chunks af én byte, giver en megabyte fri ram.
Men hvis én af modulerne forventer at kunne allokere en buffer på 2 bytes ,
så kan det fejle.
Er det et issue ?


tpt



Mogens Hansen (06-10-2007)
Kommentar
Fra : Mogens Hansen


Dato : 06-10-07 15:54


"Troels Thomsen" <nej tak ...> wrote in message
news:47074ed5$0$63738$edfadb0f@dread14.news.tele.dk...

[8<8<8<]
> Er situationen den, at hvis ikke alle malloc's går godt, så vil sofwaren
> på et tidspunkt skrive ind i en null pointer?

Nej - man skal checke om malloc gik godt inden man bruger pointeren.

[8<8<8<]
> Funderer lidt over hvordan man vha fri hukommelse et bestemt øjeblik kan
> garantere at de efterfølgende mallocs går godt.

Det tror jeg ikke at man garantere generelt.

[8<8<8<]
> Iøvrigt, en milion chunks af én byte, giver en megabyte fri ram.
> Men hvis én af modulerne forventer at kunne allokere en buffer på 2 bytes
> , så kan det fejle.
> Er det et issue ?

Ja, bestemt.
Det er fragmentering af hukommelsen.

--
Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste