Kezdőoldal » Számítástechnika » Programozás » Miért adja az alábbi C#...

Miért adja az alábbi C# kódrészlet a hibaüzenetet?

Figyelt kérdés
int[,] térkép=new int[20800,39648];

2012. nov. 25. 21:30
 1/9 anonim ***** válasza:
System.OutOfMemoryException. Remélem ezzel mindent elmondtam.
2012. nov. 25. 21:59
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

Azért mert ez így helyes:

int[,,] /*dupla vessző*/ = new int[432, 44341]

Hiszen ez egy több dimenziós tömb.

2012. nov. 26. 15:49
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
Igen igen, de a "dupla vesző" 3D-s tömböt ad..
2012. nov. 26. 18:08
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
Akkor szerintem mert é betű nem lehet benne.
2012. nov. 26. 18:11
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
már megvan a megoldás, de nem az 'é' betű a hiba, mert azt kezeli, és nem is az egy vessző [,].
2012. nov. 28. 12:29
 6/9 anonim ***** válasza:
És mi volt a megoldás? csak szimplán nem volt 3,2GB szabad memóriád, mint amit a hibaüzenet is írt?
2012. dec. 2. 18:35
Hasznos számodra ez a válasz?
 7/9 Davidson996 válasza:

Valószínüleg az volt a probléma hogy az int típusba ennyi infó nem fér (mert a változónak lefoglalt hely nem elég), én ilyenkor olyasmit alkalmaznék hogy:

Int32[,] vagy Int64[,] mint változó típus.

A két vessző pedig értelmetlen, mivel tényleg 3 dimenziós tömb lesz akkor már " = new int[10,10,10]" szerű megadást kéne alkalmazni, az "int[,,] = new int[10,10]" biztos hogy hibás.


Szóval:

Int16[,] Int32[,] vagy Int64[,] amit javasolni tudok. Szerintem ez volt a baj. ( a sima Int típus csak ~~16ezerig tud tárolni, a 20ezer és 39ezer már sok)

2013. jan. 13. 14:23
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Előző válaszoló:

Elég érdekes dolgokat írsz. .NET-ben az int 32 bites, azaz 2 milliárdig vehet fel értéket, nem 16ezerig. Másrész 3 dimenziós tömbról szó sem volt. Egy válaszoló írta, hogy az a helyes, de az is hülyeséget írt. Szerintem csak egyszerűen a tömb túl nagy. Ha egy cella méretével lenne gond, akkor nem outofmemory exception jönne, hanem valami overflow szerűség.

2013. jan. 13. 15:12
Hasznos számodra ez a válasz?
 9/9 Davidson996 válasza:
Azt írtam hogy a sima Int típus (nem az Int32) tud 16ezerig tárolni. Épp ezért ajánlottam az Int16,32,64 típusokat, mert ahogy mondtad ezek már milliós számokat is tudnak tárolni. A háromdés tömböt azért említettem meg mert valaki írtam mint megoldást, és csak rámutattam hogy az semmiképpen sem megoldás a kérdésre.
2013. jan. 13. 15:20
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!