czy najnowsze kompilatory Borlanda mają możliość alokowania tablicy o wielkości np 5GB?
sprawdzałem na stronie Borlanda. tam podają, że Code Gear działa z Net 2.0 ale czy z tego wynika, że takie tablice da się tworzyć?
czy najnowsze kompilatory Borlanda mają możliość alokowania tablicy o wielkości np 5GB?
sprawdzałem na stronie Borlanda. tam podają, że Code Gear działa z Net 2.0 ale czy z tego wynika, że takie tablice da się tworzyć?
Zatem pewnie się da, ale tylko w programach pisanych w Delphi .NET na framework 2.0. Inną sprawą jest kwestia tego, że program, który wymaga tak wielkiej tablicy, jest po prostu źle zaprojektowany.
Czy mi się wydaje, czy zaalokować taką tablicę można tylko w systemach 64-bitowych, a kompilatora Delphi dla x64 na razie jeszcze nie ma?
Ktos napisał(a)
Czy mi się wydaje, czy zaalokować taką tablicę można tylko w systemach 64-bitowych, a kompilatora Delphi dla x64 na razie jeszcze nie ma?
Ja też mam takie wrażenie. W końcu 2^32 = 4 294 967 296, a więc limit możliwy do zaadresowania w systemie 32 bitowym to 4GB. Z kolei 64 bitowego Delphi nigdy nie musiałem szukać ;)
Ale skoro przedmówca odwołuje się do .NET 2.0 (jako umożliwiającego takie działanie [chyba że go źle zrozumiałem]; a o tym nic mi nie wiadomo) to napisałem, że zapewne się da, jeśli Delphi je obsługuje.
Owszem, zaadresować można 4GB ale zwykle górne 2GB są dostępne wyłącznie dla jądra systemu. Z tego dolnego bloku też zbyt dużego, ciągłego bloku się nie wykroi - stosy wątków, zmapowane pliki, struktury kontrolne, sterty... to wszystko jest porozrzucane po tych 2GB.
deus napisał(a)
Owszem, zaadresować można 4GB ale zwykle górne 2GB są dostępne wyłącznie dla jądra systemu.
O tym, że z ciągłym obszarem może być problem wiedziałem, ale czy mógłbyś napisać czemu górne 2GB są dostępne tylko dla jądra (i czy ono w ogóle z nich korzysta czy tylko blokuje dostęp)?
Zawsze człowiek się czegoś nowego może dowiedzieć..
Tzn. tak jest domyślnie np. w Windows. Programy w Ring3 mają ograniczenie segmentów do 2GB. Ale pamięć jądra w sumie jest wspólna dla wszystkich procesów. W tej przestrzeni znajdują się różne klamoty jak bufory itd. pamięć jest na podobnych zasadach jak dla procesu - w końcu w tej przestrzeni są wszystkie sterowniki.