Вопрос по c – Что вызывает переполнение стека?

6

Вы можете подумать, что это совпадение, что тема моего вопроса похожа на название форума, но я на самом деле попал сюда, прибегая к помощи термина «переполнение стека».

Я использую сетевой симулятор OPNET, в котором я программирую, используя C. Я думаю, что у меня проблема с большими размерами массива. Кажется, что я бью своего рода ограничение выделения памяти. Это может иметь отношение к OPNET, Windows, памяти моего ноутбука или, скорее всего, к языку C. Проблема возникает, когда я пытаюсь использовать вложенные массивы с общим числом элементов, равным нескольким тысячам целых чисел. Я думаю, что я превышаю общий предел выделения памяти, и мне интересно, есть ли способ увеличить этот предел. Вот точное описание проблемы:

У меня в основном есть таблица маршрутизации. Давайте назовем это routing_tbl [n], что означает, что я поддерживаю 30 узлов (маршрутизаторов). Теперь для каждого узла в этой таблице я храню информацию. о многих (сотнях) доступных путях в массиве, называемом путями [p]. Опять же, для каждого пути в этом массиве я храню список узлов, которые ему принадлежат, в массиве с именем hops [h]. Итак, я использую как минимум nph целых чисел памяти, но эта таблица также содержит другую информацию. В той же функции я также использую другой вложенный массив, который также потребляет почти 40000 целых чисел. Как только я запускаю симуляцию, она перестает жаловаться на переполнение стека. Это работает, когда я уменьшаю общий размер таблицы маршрутизации. Как вы думаете, в чем причина проблемы и как ее можно решить? Очень признателен Али

Error: User Rate Limit Exceeded Mats Fredriksson

Ваш Ответ

6   ответов
1

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

1

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededdownwardsError: User Rate Limit ExceededupwardsError: User Rate Limit ExceededstartError: User Rate Limit Exceeded

Error: User Rate Limit Exceededstarting from the endError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

0

Error: User Rate Limit Exceeded

3

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
10

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Recursion

Error: User Rate Limit Exceeded

int recurse(int number) {

    return (recurse(number));
}

Error: User Rate Limit Exceeded

Large local variables

Error: User Rate Limit Exceeded

void hugeStack (void) {

    unsigned long long reallyBig[100000000][1000000000];

    ...
}

Error: User Rate Limit ExceededError: User Rate Limit Exceeded.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Похожие вопросы