Maksymalny rozmiar tablicy statycznie alokowanej
Ostatnio zmodyfikowano 2009-06-25 23:04
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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... |
|
1 « 2 » |