Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Вованя
122 / 122 / 47
Регистрация: 20.02.2014
Сообщений: 431
#1

Stack overflow - C++

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

Реализовал структуру данных стек на связном списке, очистку решил возложить на деструкторы узлов, т.е. каждый вызов деструктора узла вызывает деструктор следующего узла.
Правильно ли я понимаю, что при таком методе очистки ресурсов, если количество узлов какое-то, например, огромное, количество деструкторов на стеке превысит какое-то определенное количество и произойдет 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;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 16:59     Stack overflow
Посмотрите здесь:

C++ Stack overflow.
C++ Stack overflow
Почему stack overflow? C++
C++ Непонятный Stack Overflow
C++ Необработанное исключение Stack overflow
Переполнение (Stack overflow) C++
Консольный морской бой. Stack overflow C++
C++ Обработка исключений stack overflow
Возникает ошибка Stack overflow C++
Разобраться с рекурсией: stack overflow C++
C++ Stack Overflow, перегруз буфера
C++ Quicksort - исключение stack overflow

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.03.2014, 18:09     Stack overflow #2
Вованя, для стека это плохо.

Добавлено через 37 секунд
Вованя, все зависит от глубины рекурсии и размера стека. Т. е. от задачи. А так читай выше.
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
20.03.2014, 18:28     Stack overflow #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;
    }
то вроде нормально
Yandex
Объявления
20.03.2014, 18:28     Stack overflow
Ответ Создать тему
Опции темы

Текущее время: 10:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru