Co powoduje przepełnienie stosu?

Możesz pomyśleć, że to zbieg okoliczności, że temat mojego pytania jest podobny do nazwy forum, ale tak naprawdę dostałem się tutaj, używając hasła „przepełnienie stosu”.

Używam symulatora sieci OPNET, w którym programuję za pomocą C. Myślę, że mam problem z dużymi rozmiarami tablicy. Wydaje się, że uderzam w jakieś ograniczenie alokacji pamięci. Może to mieć związek z OPNET, Windows, pamięcią mojego laptopa lub najprawdopodobniej językiem C. Problem powstaje, gdy próbuję użyć zagnieżdżonych tablic o łącznej liczbie elementów dochodzących do kilku tysięcy liczb całkowitych. Myślę, że przekraczam ogólny limit alokacji pamięci i zastanawiam się, czy istnieje sposób na zwiększenie tego limitu. Oto dokładny opis problemu:

Zasadniczo mam tabelę routingu. Nazwijmy to routing_tbl [n], co oznacza, że ​​obsługuję 30 węzłów (routerów). Teraz dla każdego węzła w tej tabeli zachowuję informacje. o wielu (setkach) dostępnych ścieżkach, w tablicy zwanej ścieżkami [p]. Ponownie, dla każdej ścieżki w tej tablicy, przechowuję listę węzłów, które do niej należą, w tablicy zwanej chmielem [h]. Używam więc pamięci o wartości całkowitej co najmniej nph, ale ta tabela zawiera również inne informacje. W tej samej funkcji używam także innej zagnieżdżonej tablicy, która również zużywa prawie 40 000 liczb całkowitych. Jak tylko uruchomię moją symulację, przestaje narzekać na przepełnienie stosu. Działa, gdy zmniejszam całkowity rozmiar tabeli routingu. Jak myślisz, co powoduje problem i jak można go rozwiązać? Bardzo ceniony Ali

questionAnswers(6)

yourAnswerToTheQuestion