1. C++ / Говнокод #17750

    +54

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    void Game::initialize()
    {
        if (SDL_Init(SDL_INIT_VIDEO))
            exit(1);
        
        window = new Window("Game", 640, 480);
        try
        {
            window->create();
        }
        catch (const Exception& exception)
        {
            std::cout << exception.getError() << '\n';
            delete window;
            exit(1);
        }
        
        canvas = new Canvas();
        try
        {
            canvas->initialize(window->getWindow());
        }
        catch (const Exception& exception)
        {
            std::cout << exception.getError() << '\n';
            delete canvas;
            exit(1);
        }
    }

    Запостил: jangolare, 09 Марта 2015

    Комментарии (21) RSS

    • std::endl, блять.
      Ответить
    • > delete canvas;
      А window уже не надо удалять? Вот к чему приводит ручное управление памятью... Автору кода нужно прописать какую-нибудь статейку/книжку о смартпоинтерах и RAII.
      Ответить
      • просто кресты не подходят для первого языка программирования
        Ответить
      • Нахер вообще что-то удалять, если там exit?
        Ответить
        • Для очистки совести.

          P.S. И ты уверен, что это ::exit(), а не Game::exit()?
          Ответить
        • Сегодня память не отдашь
          а завтра мать свою продашь!
          Ответить
        • Вообще говоря, delete не только освобождает память, но и вызывает деструктор объекта. А деструкторы иногда выполняют важные действия, наблюдаемые и после завершения программы. Файлы удаляют, например.
          Ответить
          • Пометил, как лучший ответ.
            Идеально было бы, если бы деструктор удалял файлы всей игры целиком.
            Ответить
    • > window->getWindow()
      canvas->getCanvas()->getInitializer()->initialize(window->getWindow());
      Ответить
    • >>>catch (const Exception
      Классика.
      Ответить

    Добавить комментарий