Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Maksymalny rozmiar tablicy statycznie alokowanej

Ostatnio zmodyfikowano 2009-06-25 23:04
Autor Wiadomość
pompom
» 2009-06-25 05:52:40
Dlaczego 1MB? Statyczne bufory są teoretycznie nieograniczone, praktycznie są ograniczone wolną pamięcią.
Cechą (która czasami jest wadą, czasami zaletą) statycznie alokowanych buforów jest to, że są alokowane przy uruchomieniu programu i istnieją aż do końca.
Bez żadnych problemów można stworzyć bufor wielkości np. 256MB.
Jeśli jesteśmy pewni, że będziemy czegoś takiego potrzebować przez cały czas, nie jest to złe rozwiązanie - jest szybsze od dynamicznie alokowanej pamięci.
P-8027
DejaVu
» 2009-06-25 12:37:15
Wiem, że można to jakoś zmienić parametrami przekazywanymi kompilatora/konsolidatora, jednak nie czytałem jak. Jeśli masz taką wiedzę możesz się podzielić z nami dla kompilatorów GCC i VC++.

/edit:
Mimo wszystko pomimo, iż się da zmieniać rozmiar stosu (sterty) to nie należy tego namiętnie używać. W dużych programach może okazać się to konieczne, jednak na poziomie osoby uczącej się programowania taka wiedza jest w praktyce zbędna.
P-8032
pompom
» 2009-06-25 22:23:17
Zmienne statyczne nie są na stosie, tylko w sekcji danych. Zmienne statyczne to albo zmienne globalne, albo zadeklarowane w funkcji jako static.
P-8050
manfred
» 2009-06-24 14:43:41
Zmień pole IMAGE_OPTIONAL_HEADER::SizeOfStackReserve, jeśli już musisz zrobić coś większego na stosie. Linker ma jakąś opcję do tego.
P-18985
manfred
» 2009-06-25 13:04:30
/STACK:reserve[,commit] (przykład: /STACK:679936 - 664 KB stosu) dla Visuala (commit można olać, domyślny 1000 wystarczy), --stack=reserve (chyba, nie jestem pewnien... przykład: --stack=679936, to samo co w linkerze MS) dla ld. Amen.
P-18992
manfred
» 2009-06-25 23:04:17
Niebezpiecznie zakładasz, że wszędzie są sekcje.
Ja się tego nie czepiałem, bo każdy chyba widzi że chodzi o zmienne automatyczne...
P-18994
1 « 2 »
Poprzednia strona Strona 2 z 2