Piszę program w języku C i przekraczam limit rekursji przez błąd segmentacji. Czy istnieje sposób na zwiększenie limitu rekurencji programu (np. Poprzez zwiększenie rozmiaru stosu), albo poprzez opcję GCC, albo poprzez opcję wiersza poleceń? Program działa na Ubunutu.Czy istnieje sposób na zwiększenie limitu rozmiaru stosu/rekurencji?
Odpowiedz
Można zmienić rozmiar stosu z ulimit
na Linuksie, na przykład:
ulimit -s unlimited
W systemie Windows z Visual Studio, użyj /F
option.
@iharob: Pytanie jest oznaczone gcc, jeśli byłby to Windows prawdopodobnie zostałby oznaczony mingw. –
'ulimit -s unlimited' tak naprawdę nie powoduje, że rozmiar stosu jest nieograniczony. Pozwala tylko na użycie maksymalnego skonfigurowanego limitu systemowego. – wallyk
@PeterHorvath dzięki, więc wyjaśnij mi, co jest nie tak w mojej odpowiedzi. – ouah
Rozmiar stosu jest funkcją systemu operacyjnego, chociaż wiele wcześniejszych systemów operacyjnych (na przykład MSDOS) nie sterowało segmentami stosu programów: do programu zarezerwowano segment o odpowiedniej wielkości.
W przypadku pamięci wirtualnej i 32-bitowych interfejsów API rozmiar stosu jest zwykle zapewniany przez mechanizm zarządzania zasobami. Na przykład w systemie Linux komenda ulimit
zapewnia jedno źródło kontroli rozmiaru stosu. Inne poziomy kontroli zapewniają mechanizmy wewnątrz zasad systemu egzekwowania jądra, ograniczenia pamięci i inne ograniczenia.
- 1. Czy istnieje sposób na zwiększenie symulacji iPada?
- 2. Zwiększenie błędu 504 limitu czasu
- 3. Czy istnieje sposób na zwiększenie wysokości paska strip.text w aspekcie?
- 4. Czy istnieje sposób na zwiększenie wydajności przewodów linuxowych?
- 5. Java, zwiększenie limitu czasu gniazda
- 6. Czy istnieje sposób na ustawienie limitu rozliczeniowego Amazon AWS?
- 7. Android UnknownHostException: czy istnieje sposób na ustawienie limitu czasu?
- 8. Zwiększenie limitu czasu dla .ashx
- 9. Swift, Xcode - Zwiększenie rozmiaru UISwitcha
- 10. CSS - Zwiększenie rozmiaru strony Font
- 11. Docker - zwiększenie rozmiaru/dev/shm
- 12. c3js: Czy istnieje sposób na zmianę rozmiaru czcionki?
- 13. Czy istnieje prosty sposób na uzyskanie rozmiaru obiektu java?
- 14. Zwiększenie limitu czasu polecenia polecenia SQL
- 15. Czy istnieje sposób na zwiększenie przezroczystości IE8 na pseudo elementu `: before`?
- 16. Zwiększenie rozmiaru czcionki w oknie dokumentacji XCode
- 17. Czy istnieje sposób na ustawienie limitu członków na posortowanym zestawie redis?
- 18. Zwiększenie rozmiaru kolumny VARCHAR na dużym stole może spowodować problemy?
- 19. PhoneGap: Czy istnieje sposób, aby zatrzymać zmianę rozmiaru widoku klawiatury?
- 20. Czy istnieje sposób na zwiększenie wysokości kontrolera widoku w scenopisie w Xcode 6?
- 21. serializowanie danych przy użyciu limitu rozmiaru json.net?
- 22. Zastępujesz renderowanie limitu rozmiaru strony/StreamReadera?
- 23. Czy istnieje sposób na wydrukowanie rozmiaru pliku na dysku w pakiecie?
- 24. Najlepszy sposób na zwiększenie wielkości sterty w pliku catalina.bat
- 25. Czy istnieje sposób automatycznej zmiany rozmiaru obrazów MediaWiki w zależności od rozmiaru ekranu?
- 26. Najlepszy sposób na pokonanie limitu czasu WCF
- 27. Czy istnieje limit rozmiaru tablicy w ruby?
- 28. Czy istnieje limit rozmiaru plików wsadowych?
- 29. Czy istnieje sposób na uniknięcie wyszukiwania liniowego?
- 30. Czy istnieje sposób na utrzymanie danych HSQLDB?
Masz na myśli, że przepełniasz stos, a co za tym idzie błąd segmentacji? –
@iharob: Tak, zweryfikowałem to za pomocą 'gdb'. – Claudiu
dlaczego nie piszesz iteracyjnie? – saadtaame