Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Punjenje memorije

[es] :: C/C++ programiranje :: Punjenje memorije

[ Pregleda: 2939 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dagree

Član broj: 27626
Poruke: 11
*.ptt.yu.



Profil

icon Punjenje memorije30.04.2006. u 01:04 - pre 218 meseci
Imamo sledeci C fajl:

Code:

#include <stdio.h>
#include <stdlib.h>

void main(){

long float *a;
a=(long float*)malloc(2621440*sizeof(long float));
long float i;
for (i=0; i<2621440; i++) { a[i]=i; }

char k;
scanf (&k);
free(a);

}



Znaci alociramo prostor od 2621440*8B=20MB i zatim ga popunimo. Medjutim kada se program startuje, posmatrano iz Windows Task Manager-a (odeljak PF usage), memorija kao da se uopste ne puni. Dakle moje pitranje je sta se dasava sa ovih 20MB tj. gde se oni smestaju?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Punjenje memorije30.04.2006. u 08:53 - pre 218 meseci
Kod mene ovaj kod (malo modifikovan) radi onako kako ocekujes, tj. lepo se vidi
kako od RAM-a uzme 20-tak MB rama i nakon toga ih vrati.

Inace, posto sam ja staromodan tip i ne znam cemu sluzi long float, koristio sam
double.

Code:

// ...
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
// ...
double *a;
a = ( double* ) malloc ( 2621440 * sizeof( double ) );

long i;
for ( i=0; i<2621440; i++ )
{
   a[ i ] = (double)i;
}
_sleep( 5 );
free( a );
// ...

 
Odgovor na temu

dagree

Član broj: 27626
Poruke: 11
*.ptt.yu.



Profil

icon Re: Punjenje memorije30.04.2006. u 22:52 - pre 218 meseci
Isto se desava. Procesor je i dalje 100% iskoriscen, ali PF Usage ni da mrdne. Jedino sto se memorija napuni za nekih 2MB ali to potice od ntvdm.exe koji se koristi za pokretanje fajla. Ne bi trebalo da je do kompajlera...koristim bc.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Punjenje memorije01.05.2006. u 08:50 - pre 218 meseci
Kod mene je kompajler koji ide uz Borland C++ Builder 6, i lepo se vidi kako se PF Usage
poveca za tih 20 MB i nakon 5 sekundi ih vrati.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Punjenje memorije01.05.2006. u 17:42 - pre 218 meseci
Meni je sumnjivo to (pre)opterecenje procesora od 100%. To se ne bi smelo dogoditi sa
kodom koji si prikazao. Koliko imas RAM-a? Ja na ovoj masini imam 512MB i lepo vidim
kako kako se PF sa 289 pomeri na 309, pa opet nakon 5 sekundi na 289. Svo vreme je
opterecenje procesora oko 1-2 %.
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Punjenje memorije01.05.2006. u 18:59 - pre 218 meseci
I meni je opterecenje CPU jako malo. A PF zauzece se primeti.

Neprikazivanje zauzeca memorije sledi obicno ako je interval jako kratak ili verovatno ako je i procesor dosta zauzet. A samo zauzece bi moglo biti od tog frekventnog for-a, ako je CPU slabiji.

Lupam... probaj da postavis _sleep( 5 ); na _sleep( 5000 ); . Kod mene prvi pravi pauzu od samo 5ms.
Ipak se ++uje.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Punjenje memorije01.05.2006. u 19:10 - pre 218 meseci
Citat:

@Mali Misa
Kod mene prvi pravi pauzu od samo 5ms.


Hm... Bas čudno. Ovo je iz Borland-ovog C Runtime Library Helpa:

Citat:

Header File
dos.h

Category
Process Control Routines

Prototype
void _sleep(unsigned seconds);

Description
Suspends execution for an interval (seconds).

With a call to _sleep, the current program is suspended from execution for the number of seconds
specified by the argument seconds. The interval is accurate only to the nearest hundredth of a
second or to the accuracy of the operating system clock, whichever is less accurate.

Return Value
None.


Inace, tacno je i da ako je procesor opterecen 100% radi necega, verovatno ne moze tacno i brzo
da obavesti o promenama zauzete memorije.
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Punjenje memorije01.05.2006. u 19:32 - pre 218 meseci
Sorry, ja sam na MS VC++ 6.0. :) Bcc32-ov _sleep radi sa sekundama.
Ipak se ++uje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Punjenje memorije

[ Pregleda: 2939 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.