Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: limita de memorie la OJI?  (Citit de 10003 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #25 : Martie 06, 2007, 11:22:51 »

De exemplu, odata incercam sa aloc dinamic liste de adiacenta pentru un graf folosind realloc. Am generat un fisier de test cu mai multe muchii, si cand am rulat programul se bloca inexplicabil. Am facut debug pas cu pas si am constat ca la un moment dat, cand incerca sa aloce o muchie aparea ecranul negru si nu se intampla nimic, ceva de genul bucla infinita.
Alocai cu malloc si erai in modelul de memorie small. Malloc aloca din heap (64k max pe small) si doar pe modelele de memorie compact, large sau huge aloca din far heap (unde ai spatiu cat te tine RAMul sau nelimitat in windows/linux). Daca la programul ala compilai cu model de memorie compact, iti mergea perfect.
Daca vrei sa nu depinzi de modelul de memorie aloca memoria cu farmalloc.. dar ai grija ca apoi trebuie peste tot sa lucrezi cu far pointeri (ex: int far *a). Prin urmare scanf nu o sa mearga cu variabilele respective (el lucreaza cu pointeri, nu cu far pointeri) si inca cateva functii care trebuie sa le tratezi mai special (memcopy devine fmemcopy... etc)

Sau.. poti sa bati comisia de la OJI la cap sa compileze toate sursele cu modelul de memorie compact sau large (huge nu recomand).. tot ce au de facut este sa adauge -ml la linia de compilare.
Sau.. poti sa folosesti pragma si sa setezi explicit in programul tau modelul de memorie in care vrei sa compilezi (dar daca ai un model specificat cu pragma si la compilare setezi alt model, nu stiu exact pe care din cele doua le ia in considerare)

Alocarea de memorie merge foarte bine in BC, doar ca este putin mai complex facuta dupa cum am detaliat mai sus.. este asa ca acel compilator poate creea executabile si pentru procesoare 386, care nu aveau decat 64k + memorie extended paginata sau chiar procesoare mai varza Smile
« Ultima modificare: Martie 06, 2007, 11:24:41 de către Valentin Stanciu » Memorat
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #26 : Martie 06, 2007, 14:06:51 »

Intr-adevar, mersi de informatii  Applause Am facut acuma cu malloc si am compilat cu modelul compact sau large si a mers.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #27 : Martie 07, 2007, 18:57:11 »

Am o intrebare,intrucat asta e primul an cand merg la OJI.Sursele se compileaza pe acelasi calculator?Ca de ex,un calculator poate avea un procesor mai bun ca altul...
Si a mai zis cineva ca un milion de operatii => 0.1 sec.Am inteles bine aici?
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #28 : Martie 07, 2007, 18:59:11 »

Da se va evalua la acelasi computer.
Memorat

vid...
tudalex
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #29 : Martie 08, 2007, 08:20:17 »

Daca vrei sa nu depinzi de modelul de memorie aloca memoria cu farmalloc.. dar ai grija ca apoi trebuie peste tot sa lucrezi cu far pointeri (ex: int far *a). Prin urmare scanf nu o sa mearga cu variabilele respective (el lucreaza cu pointeri, nu cu far pointeri) si inca cateva functii care trebuie sa le tratezi mai special (memcopy devine fmemcopy... etc)
Si cum poti citi cu scanf o variabila far? Sau trebuie sa citesti un int si apoi sa il faci ceva de genu a=t; ??
Memorat

"Doua lucruri sunt infinite: universul si prostia omeneasca, dar de prima inca nu sunt sigur" Albert Einstein
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #30 : Martie 08, 2007, 09:23:30 »

ai cam ghicit Smile
Cod:
int a;
int far b;
...
scanf("%d\n", &a);
b=a;
Memorat
StTwister
Client obisnuit
**

Karma: 11
Deconectat Deconectat

Mesaje: 86



Vezi Profilul
« Răspunde #31 : Martie 08, 2007, 17:24:44 »

Am o intrebare,intrucat asta e primul an cand merg la OJI.Sursele se compileaza pe acelasi calculator?Ca de ex,un calculator poate avea un procesor mai bun ca altul...
Aici cred ca depinde de fiecare comisie judeteana. Anul trecut nu mi s-a acordat dreptul sa supraveghez evaluarea, chiar daca am solicitat acest lucru. Asa ca cel mai bine intreaba profesorul tau sau comisia de evaluare
Memorat
marcelcodrea
Nu mai tace
*****

Karma: 173
Deconectat Deconectat

Mesaje: 217



Vezi Profilul
« Răspunde #32 : Martie 09, 2007, 00:53:36 »

Am o intrebare,intrucat asta e primul an cand merg la OJI.Sursele se compileaza pe acelasi calculator?Ca de ex,un calculator poate avea un procesor mai bun ca altul...
Anul trecut , pe mine m-au lasat sa particip si au evaluat pe acelasi calculator !  peacefingers
Memorat
Darth_Niculus
De-al casei
***

Karma: -13
Deconectat Deconectat

Mesaje: 143



Vezi Profilul
« Răspunde #33 : Martie 09, 2007, 10:27:26 »

 Probabil se va compila pe un calculator cu aceleasi resurse ca cel pe care ai lucrat tu.
Memorat
c_sebi
Client obisnuit
**

Karma: 24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #34 : Martie 11, 2007, 13:57:00 »

explicati-mi va rog cum se compileaza o sursa din linia de comanda?
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #35 : Martie 11, 2007, 14:45:17 »

In borland, daca e in pascal dai direct "bpc sursa.pas", iar in c/c++ intai setezi variabila %PATH%  astfel incat sa indice spre directorul "bin" al borland c si pe urma "bcc sursa.cpp"... (chestia aia cu variabila parca era "set %PATH%=%path%;C:\borlandc\bin" )...
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines