» »

[C] - char *argv[], printf("%d ...

[C] - char *argv[], printf("%d ...

rkb2 ::

Imam naslednje probleme:

1.
int main (int argc, char *argv[]) {

Programu podam eno število (xyz.exe 5,) rad bi argv[1] pretvoril v integer:

int n = *argv[1]; - to ne dela prav

2.

int *p;
p=(int*) malloc(sizeof(int)*1024*1024*256);

Kako preperečiti windowsom da omenjenega pomnilnika ne bi allociral v swap file-u ?

3.

Zakaj se program sesuje če napišem:
char a[1024][1024][3];

če pa napišem
char a[1024][1024][1];

dela brez problemov.
  • spremenilo: rkb2 ()

SasoS ::

1. int n = atoi(argv[1]);

2. alociraš 1GB rama...kam pa misliš da bo šlo??

3. načeloma bi moralo delati...odvisno kako uporabiš potem ta 3-dimenzionalni array.

rkb2 ::

2. alociraš 1GB rama...kam pa misliš da bo šlo??

Samo recimo da imaš free 2 Gb spomina. A se da windowsom kako dopovedat, da naj uporabljajo samo RAM in ne SWAP datoteke ?

3. načeloma bi moralo delati...odvisno kako uporabiš potem ta 3-dimenzionalni array.

Nič že sama definicija char a[1024][1024][3]; mi sesuje program takoj ko ga zaženem. (prevedeno pod dev c++ - oziroma mingw32).

SasoS ::

2. To je pravzaprav popolnoma od OSa odvisno kam bo dal. Ne moreš programsko dopovedat kam naj spravi heap. Načeloma bi morali XPji spomin alocirati v ramu dokler ga ne zmanjka...

3. char a[1024][1024][3]; se mi kompajla in dela pod linuxom (gcc 2.95).

Gundolf ::


2. alociraš 1GB rama...kam pa misliš da bo šlo??

Samo recimo da imaš free 2 Gb spomina. A se da windowsom kako dopovedat, da naj uporabljajo samo RAM in ne SWAP datoteke ?


Ce bi bili windowsi kolickaj pametni bi ti najprej zapolnili ram in sele nato brskali po swapu. Glede na moje dosedanje izkusnje bi rekel da so toliko pametni, vsaj ko govorimo tam nekje do 512M RAMa. Moznost, da se jim pri vecjih cifrah sfuzla pa je povsem verjetna.


3. načeloma bi moralo delati...odvisno kako uporabiš potem ta 3-dimenzionalni array.

Nič že sama definicija char a[1024][1024][3]; mi sesuje program takoj ko ga zaženem. (prevedeno pod dev c++ - oziroma mingw32).


Tole je verjetno odvisno od kompajlerja in od nastavitve velikosti stacka. Vsaj mislim da ti bo take tabele nabil v stack. Kakorkoli ze, ne svetujem ti da tabele velike vec kot nekaj KB delas na ta nacin. Ce imas velikansko tabelo jo pac alociraj dinamicno.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] Procesi

Oddelek: Programiranje
6988 (897) Cvenemir
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
657486 (6559) MrBrdo
»

[c++]malo pozabljene osnove ali drugačen način v linux?

Oddelek: Programiranje
241595 (1063) 'FireSTORM'
»

[C/C++] pointerji in reference

Oddelek: Programiranje
112060 (1884) Matako
»

[C++] tip spremenljivke

Oddelek: Programiranje
131618 (1526) Gundolf

Več podobnih tem