Írtam egy free pascal programot és a Ramból csak pár MB tud használni ezt hogy lehet hogy az egészet használja?
A fenét, ezek gagyi megoldások, ez lefoglal neked minden memóriát:
program valami;
var
w : ^word;
begin
while 1 = 1 do new(w);
end.
#13: Ez nem minden(!) esetben igaz. Ha páratlan számú byte-ból áll a memória, akkor, ha feltételezzük, hogy a word egy 16-bites egész szám, miután mindent lefoglal, marad egy darab bájt le nem foglalatlanul. Tehát nem minden esetben foglal le minden memóriát. :-D
Persze ez csak szőrszálhasogatás, ugyanis általában egy operációs rendszer "felett" futnak ezek a dolgok, ami ugye megint memóriát használ, aztán a programot is be kell tölteni a memóriába, ami ugye szintén memóriahasználat...
17:02
Én nem értek a pascalhoz de a kódod nem véletlenül a stacken foglalja le a tömböt? Az nem biztos hogy úgy működne.
A másik fele a dolognak hogy 32 biten a program legfeljebb 4GB-t tud megcímezni, de O/S és programfüggő hogy annyit meg is kap e. Alapból 2GB a max 32 bites rendszeren, ha /3gb kapcsolóval indul a Windows akkor 3GB, és egy 64 bites rendszer egy 32 bites programnak kb. 3,5GB memóriát tud kiosztani. Ha ennél több kell, akkor 64 bitesnek kell fordítani a programot, ekkor a dinamikusan lefoglalt memória 8TB-ig felmehet ha van elég RAM-od hozzá :)
#15: Szerintem a heapen foglal helyet.
"SetLength allocates and frees memory on the heap as needed. When used in functions or procedures only the pointer is added to the stack."
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!