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

Punjenje memorije

[es] :: C programiranje :: Punjenje memorije

[ Pregleda: 865 | Odgovora: 7 ]

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

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?
30.04.2006. u 01:04 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Punjenje memorije30.04.2006. u 08:53
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 );
// ...


FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
30.04.2006. u 08:53 

dagree

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



Profil

icon Re: Punjenje memorije30.04.2006. u 22:52
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.
30.04.2006. u 22:52 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Punjenje memorije01.05.2006. u 08:50
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.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
01.05.2006. u 08:50 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Punjenje memorije01.05.2006. u 17:42
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 %.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
01.05.2006. u 17:42 

Mali Misha
Mihajlo Anđelković

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

ICQ: 195487525


Profil

icon Re: Punjenje memorije01.05.2006. u 18:59
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.
Dim di dam...
01.05.2006. u 18:59 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Punjenje memorije01.05.2006. u 19:10
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.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
01.05.2006. u 19:10 

Mali Misha
Mihajlo Anđelković

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

ICQ: 195487525


Profil

icon Re: Punjenje memorije01.05.2006. u 19:32
Sorry, ja sam na MS VC++ 6.0. :) Bcc32-ov _sleep radi sa sekundama.
Dim di dam...
01.05.2006. u 19:32 

[es] :: C programiranje :: Punjenje memorije

[ Pregleda: 865 | Odgovora: 7 ]

Postavi temu Odgovori

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