Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
1

Stack overflow

20.03.2014, 16:59. Показов 1472. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализовал структуру данных стек на связном списке, очистку решил возложить на деструкторы узлов, т.е. каждый вызов деструктора узла вызывает деструктор следующего узла.
Правильно ли я понимаю, что при таком методе очистки ресурсов, если количество узлов какое-то, например, огромное, количество деструкторов на стеке превысит какое-то определенное количество и произойдет stack overflow?
C++
1
2
3
4
5
6
7
8
9
10
private:
    struct node
    {
        node():next(0){}
        ~node(){ delete next; }
        int value;
        node *next;
    };
    node *head;
    size_t count;
И соответственно в деструкторе класса
C++
1
delete head;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2014, 16:59
Ответы с готовыми решениями:

Stack overflow.
У меня в программе есть реверсивная функция (много параметров) она вызывает себя очень много раз....

Stack overflow
Написал #include "stdafx.h" #include <iostream> using namespace std; #include <math.h> #include...

Переполнение (Stack overflow)
Подскажите, пожалуйста, почему при перемещении int n, a, k; в локальную область программа при...

Почему stack overflow?
Почему приведенный ниже код сразу же приводит к переполнению стека? int _tmain(int argc,...

2
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
20.03.2014, 18:09 2
Вованя, для стека это плохо.

Добавлено через 37 секунд
Вованя, все зависит от глубины рекурсии и размера стека. Т. е. от задачи. А так читай выше.
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
20.03.2014, 18:28 3
забавно, никогда не задумывался на такую тему. попробовал сделать как у автора. сделал 10кк объектов, ссылающихся на следующий за собой. вызвал
C++
1
delete head;
упало уже 2160-ом вызове.
при этом если удалять так
C++
1
2
3
4
5
6
for(int i=0; i<9999999; ++i)
    {
        T *next = head->next;
        delete head;
        head = next;
    }
то вроде нормально
0
20.03.2014, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2014, 18:28
Помогаю со студенческими работами здесь

Непонятный Stack Overflow
Здравствуйте, уважаемые форумчане.Столкнулся с непонятной мне проблемой при решении одной лёгкой...

Обработка исключений stack overflow
Помогите... Опишите функцию умножения двух чисел с плавающей запятой, обработайте ошибку...

Необработанное исключение Stack overflow
Здравствуйте. Такое дело: считываю файл в буфер, а он ругаиццо. ... DWORD bufferSize =...

Stack overflow с тернарным оператором
Так работает: unsigned long Ly(const string &amp;s) { ... } unsigned long Rs(const string &amp;s) { ... }...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru