C#-ban a List memóriafolytonos, mint a Javaban ar ArrayList, meg a c++-ban az std::vector?
Nem mindegy. Ha arrayként van implementálva (és így van), akkor nagy méret esetén nem biztos, hogy van elég hosszú megszakítatlan hely a heap-en, ilyenkor csak dob egy OutOfMemoryException-t.
Másrészt az elemek indexszámítással konstans lépéssel elérhetőek.
Helyesbítek, a List tényleg egy tömb.
Egy marha, aki kitalálta, főleg hogy felesleges így, a vector tudja ugyanazt.
Amivel én kevertem, az a LinkedList. Na az tényleg nem tömb.
Ettől függetlenül így is le tud foglalni 2 GB méretű tömböt, mert ha a List nem is darabolja fel, a Runtime megteheti, mivel virtuális memóriacímek vannak.
Kérdés, hogy megteszi-e.
Elméletileg van ilyen gcAllowVeryLargeObjects konfigurációs opció 64 bites rendszerekre amivel megszűnik a 2GB object méret limit.
Gugliztam egy kicsit és úgy néz ki, hogy a memóriából 32 bites rendszereken lehet könnyen kifutni, mert a win32 processeknek is van egy 2-3 GB limitje. Szerintem ez már nem probléma 2K20ban.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!