Ĺadny brzuch
Witam szanownych formowiczow.
Wie ktos z Was, jak zwiekszyc rozmiar pamieci programu (chyba trzeba informacje o stosie zmienic, ale to tylko moje przypuszczenia)? Jak w temacie napisalem, chodzi mi o jezyk c#. Jezeli to ma jakies znaczenie, to kompiluje gcc.
Na razie program sie wywala juz przy dwoch (moze trzech) tablicach int arr[1000000], a potrzebuje ich troche wiecej (kolo 6).
... Jak w temacie napisalem, chodzi mi o jezyk c#. ...
Na razie program sie wywala juz przy dwoch (moze trzech) tablicach int arr[1000000], a potrzebuje ich troche wiecej (kolo 6).
z c# nie mialem do czynenia, ale słyszałem że tam alokacja pamięci jest uproszczona.
Jeżeli chcesz zapisać tak duże tablice to odradzam stos. Lepiej wtedy użyć operatora new (c++) i zaalokować pamięć na stercie.
Jeżeli mimo to chcesz zapisac na stosie to można zwiększyć troszkę ilość pamięci przeznaconej na stos przydzielonej każdemu programowi. W WINAPI ustawić to można bylo podczas rejestrowania klasy okna. Myśle ze można to także ustwić w opcjach w większość środowisk programistycznych.
w temacie napisałeś że chodzi o język C, a tu mówisz że C#. chyba jednak o C chodziło :)
Hmm, znowu moja nie wiedz a :( Myslalem ze c = c# :P.
co to u Ciebie znaczy "wywala się"?? podczas pracy się sypie? może spróbuj go zdebugować (gdb np.)
poszperałem za Ciebie trochę w sieci ;)
1) spróbuj użyć: unsigned _stklen = 1048576; // jako zmienna globalna // wielkosc stosu w bajtach
Tu jest opis tej metody
2) spróbuj dynamicznie zaalokować tablicę (funkcja malloc)
3) podobno starsze wersje djgpp powodowały takie błędy czasem, spróbuj uaktualnić jeśli masz starszą wersję (ale najpierw pierwsze 2 sposoby ;) )
no i zobacz jeszcze -TO- jeśli chcesz
to tyle co udało mi się znaleźć nie widząc Twojego kodu :)
Użytkownik Kabar edytował ten post 21 marzec 2006, 19:41
poszperałem za Ciebie trochę w sieci ;)
1) spróbuj użyć: unsigned _stklen = 1048576; // jako zmienna globalna // wielkosc stosu w bajtach
/ cut /
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Wie ktos z Was, jak zwiekszyc rozmiar pamieci programu (chyba trzeba informacje o stosie zmienic, ale to tylko moje przypuszczenia)? Jak w temacie napisalem, chodzi mi o jezyk c#. Jezeli to ma jakies znaczenie, to kompiluje gcc.
Na razie program sie wywala juz przy dwoch (moze trzech) tablicach int arr[1000000], a potrzebuje ich troche wiecej (kolo 6).
... Jak w temacie napisalem, chodzi mi o jezyk c#. ...
Na razie program sie wywala juz przy dwoch (moze trzech) tablicach int arr[1000000], a potrzebuje ich troche wiecej (kolo 6).

z c# nie mialem do czynenia, ale słyszałem że tam alokacja pamięci jest uproszczona.
Jeżeli chcesz zapisać tak duże tablice to odradzam stos. Lepiej wtedy użyć operatora new (c++) i zaalokować pamięć na stercie.
Jeżeli mimo to chcesz zapisac na stosie to można zwiększyć troszkę ilość pamięci przeznaconej na stos przydzielonej każdemu programowi. W WINAPI ustawić to można bylo podczas rejestrowania klasy okna. Myśle ze można to także ustwić w opcjach w większość środowisk programistycznych.
w temacie napisałeś że chodzi o język C, a tu mówisz że C#. chyba jednak o C chodziło :)
Hmm, znowu moja nie wiedz a :( Myslalem ze c = c# :P.
co to u Ciebie znaczy "wywala się"?? podczas pracy się sypie? może spróbuj go zdebugować (gdb np.)

poszperałem za Ciebie trochę w sieci ;)
1) spróbuj użyć: unsigned _stklen = 1048576; // jako zmienna globalna // wielkosc stosu w bajtach
Tu jest opis tej metody
2) spróbuj dynamicznie zaalokować tablicę (funkcja malloc)
3) podobno starsze wersje djgpp powodowały takie błędy czasem, spróbuj uaktualnić jeśli masz starszą wersję (ale najpierw pierwsze 2 sposoby ;) )
no i zobacz jeszcze -TO- jeśli chcesz
to tyle co udało mi się znaleźć nie widząc Twojego kodu :)
Użytkownik Kabar edytował ten post 21 marzec 2006, 19:41
poszperałem za Ciebie trochę w sieci ;)
1) spróbuj użyć: unsigned _stklen = 1048576; // jako zmienna globalna // wielkosc stosu w bajtach
/ cut /
