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

    −23

    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
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    int _DIRECTION = 0;
    int _WIDTH = 10;
    int _HEIGHT = 20;
    int _TICK = 500;
    int _SCALE = 20;
    int _CELLS = _WIDTH * _HEIGHT;
    int _WIDTH_GENERAL = _WIDTH * _SCALE;
    int _HEIGHT_GENERAL = _HEIGHT * _SCALE;
    
    void _ENTITY::_ENTITY_PARAMETERS(bool x, bool z)
    {
        _MOVABLE = x;
        _STATIC = z;
    }
    
    void _KEYBOARD(int _KEY, int _COORD_X, int _COORD_Y)
    {
        if (_DIRECTION == 0)
        {
    	if (_KEY == _UP_KEY)
    	    _ROTATION = true;
    	if (_KEY == _DOWN_KEY)
    	    if (_ACCELERATE == false)
    		_ACCELERATE = true;
    	    else
    		_ACCELERATE = false;
    	if (_KEY == _RIGHT_KEY)
    	{
    	    _DIRECTION = _RIGHT;
    	}
    
    	if (_KEY == _LEFT_KEY)
    	{
    	    _DIRECTION = _LEFT;
    	}
        }
    }
    void _TETRIS::_TETRIS_SET_DIRECTION()
    {
        if (_DIRECTION != 0)
        {
    	if (_DIRECTION == _RIGHT)
    	{
    	    for (int _ENTITY = 0; _ENTITY < (_HEIGHT * _WIDTH); ++_ENTITY)
    	    {
    		_TEMP_INS = _ENTITIES[_ENTITY]._ENTITY_SHOW_MOVABLE();
    		if (_TEMP_INS = true)
    		{
    		    if ((_ENTITY * _WIDTH) == (_WIDTH - 1))
    			_DIRECTION = 0;
    		    else
    			_MOVE_FLAG = true;
    		}
    	    }
    	    if (_MOVE_FLAG == true)
    	    {
    		for (int _ENTITY = 0; _ENTITY < (_HEIGHT * _WIDTH); ++_ENTITY)
    		{
    		    _TEMP_INS = _ENTITIES[_ENTITY]._ENTITY_SHOW_MOVABLE();
    		    if (_TEMP_INS = true)
    		    {
    			_TEMP_INS = _ENTITIES[_ENTITY + 1]._ENTITY_SHOW_STATIC();
    			if (_TEMP_INS == true)
    			{
    			    _MOVE_FLAG = false;
    			    _DIRECTION = 0;
    			}
    		    }
    		}
    	    }
    	    if (_MOVE_FLAG == true)
    	    {
    		for (int _ENTITY = (_HEIGHT * _WIDTH) - 1; _ENTITY >= 0; --_ENTITY)
    		{
    		    _TEMP_INS = _ENTITIES[_ENTITY]._ENTITY_SHOW_MOVABLE();
    		    if (_TEMP_INS = true)
    		    {
    			_ENTITIES[_ENTITY]._ENTITY_PARAMETERS(false, false);
    			_ENTITIES[_ENTITY + 1]._ENTITY_PARAMETERS(true, false);
    			_MOVE_FLAG = false;
    			_DIRECTION = 0;
    		    }
    		}
    	    }
    	}
        }
    }

    Вот этот код выдаёт Segmentation fault. Массив обьектов _ENTITIES из 200 обьектов. Перед ошибкой заполняет екран кроме двух первых клеток снизу. ВТФ?

    Запостил: Shantykoff, 18 Марта 2017

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

    • Да, для массива _ENTITIES длиною в 200 элементов гарантированно имеет место выход за пределы массива, это даже можно математически доказать.
      В циклах _ENTITY проходит от 0 до 199. В них безусловно используется _ENTITIES[_ENTITY], а также _ENTITIES[_ENTITY + 1] - по условию. Если условие истинно, при _ENTITY равном 199 будет выход за границы массива. Если немного поглядеть на условие, станет очевидным, что оно всегда истинно в силу особенностей C-подобных языков. Т.е. в каждом из циклов имеет место выход за границы массива.

      Что можно посоветовать автору кода?
      1. Попробовать посмотреть на программу с математической точки зрения.
      2. Использовать assert (из <cassert>) и вставить assert(X >= 0 && X < 200); перед любым _ENTITIES[X].
      3. Использовать отладчик или отладочную печать (можно, например, выводить в cerr и перенаправить его в файл, если в cout выводится псевдографика)
      А также:
      1. Переосмыслить свой стиль именования
      2. Осознать унарный оператор "отрицание" (восклицательный знак)
      3. Осознать, что X == true в условии эквивалентно X
      Ответить
      • Cerr и cout не используются, данная программа на openGl - ё, что не так с именами? Очень удобно вызывать из классов, отрицание... что с ни с не так? Выходить по сути не должен, такая система используется и в заполнении, и в удалении объектов, и математически всё в For объяснено, но я так же добавил данные проверки после создания поста, не помогло :/
        Ответить
        • > Cerr и cout не используются
          Это хорошо, как минимум отладочная печать заработает.
          > что не так с именами?
          Неканоничные они. Даже противозаконные, если верить http://stackoverflow.com/a/228797
          > отрицание
          строки 23-26
          > Выходить по сути не должен
          > и математически всё в For объяснено
          Должен.
          Ну ладно, если _ENTITY_SHOW_MOVABLE вдруг меняет _WIDTH, _HEIGHT или _ENTITY, то не выходит. Иначе выходит за границы и читает из 200-го элемента.
          > такая система используется и в заполнении, и в удалении объектов
          Могло повезти, на то и неопределённое поведение.
          Ответить
          • Нет, не меняет :), он показывает подвижен ли объект, если подвижен то собственно для него высчитывают, есть ли справа статичный объект или конец карты, а так же в случае их отсутствия - перемещение, только уже сверху вниз, из-за одного Бага,_WIDTH и другие эти переменные не меняются.. Точно надо бы их константами обозначить
            Ответить
            • Предлагаю перед строкой 62 (аналогично - перед 79й), где используется _ENTITIES[_ENTITY + 1], вставить
              if(_ENTITY + 1 == 200) std::cout << "200!" << std::endl;

              Как минимум, в представленной здесь версии кода будет выведено "200!" перед тем, как программа обратится к 200му элементу.
              Ответить
              • Предлагаю изучить дебаггер и поставить hardware BP по адресу _ENTITIES+200*sizeof(этот ваш энтити)

                как пхпшники, чесслово
                Ответить
                • > Предлагаю изучить дебаггер и поставить hardware BP по адресу _ENTITIES+200*sizeof(этот ваш энтити)
                  > как пхпшники, чесслово
                  А зачем дебаггер? Как мне кажется, это как пушкой по воробьям. Не настолько же Shantykoff не знает свою программу, что только полное погружение поможет.
                  Ответить
                  • Я уже столько с этим кодом яб*сь что каждый кусок помню на память, просто это мой первый проект, и делаю его я без туториалов, иначе нету смысла
                    Ответить
                  • а как иначе научиться всякому windbg, gdb, lldb и прочей магии?
                    Ответить
                    • В соседней палате, у акопяна.
                      Ответить
                      • пошел-ка ты нахуй
                        Ответить
                        • На больных не обижаемся.
                          Налицо сразу два диагноза: 1. копролалия; 2. слепота (медсестра - она).

                          Приходите к нам, под пианино попляшем.
                          Ответить
                          • >она
                            стертор, ты на гормонах чилишоли?
                            Ответить
                            • Доктор в командировке, я за него.
                              Ответить
                              • Сестра, мне нужно к доктору. В моём анусе застряла вилка.
                                Ответить
                                • Вот уж неутомимый больной!.. Вы нам все вилки перевели.
                                  Ответить
                                  • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                    Ответить
                                  • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                    Ответить
                                • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                  Ответить
                                • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                  Ответить
                                • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                  Ответить
                            • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                              Ответить
                              • Такого рода вмешательство может повредить ваш задний проход.
                                Ответить
                                • Скажите, доктор, где можно починить испорченный проход?.. Это возможно?..
                                  Ответить
                                  • Операции такого рода широко практикуются армянскими специалистами.
                                    Ответить
                                    • Ты не сравнивал инспекции силайна или шланга (Clang Static Analyzer)
                                      с пивасой?
                                      Ответить
                                      • Слово "целитель" тут, кхм, не очень-то уместно...
                                        Ответить
                                        • Ты не сравнивал жопу с пальцем?
                                          Ответить
                                          • НЛО прилетело и опубликовало эту запись.
                                            Ответить
                                            • НЛО прилетело и опубликовало эту запись.
                                              Ответить
                                            • НЛО прилетело и опубликовало эту запись.
                                              Ответить
                    • А нужно ли это вообще?
                      Ответить
              • Уже не надо, всё получилось! Не учел одну штуку :)
                Ответить
      • Да, про х == true не подумал изначально, но раз начал то уж закончу в таком упрощенном стиле, выложу на всеобщее обозрение, может кто поймёт лучше алгоритм тетриса
        Ответить
        • Давайте шурундить и спамить! :)
          Ответить
          • Да я случайно, не кидайте в меня тряпки, осознал что не использовал х с == true слишком поздно, а так да, написал бы в одном сообщении... А собственно других ошибок не видите? Не должно давать, я уже проверял методично по старинке, бумага ручка
            Ответить
    • Потом парень заканчивал, снимал презик, бросал его на пол, а эта самка ожидала следующего героя. Иногда за вечер через Наткину вагину «проходило» до двух десятков парней!
      Ответить
    • Мы забрызгивали Натку спермой с головы до ног! Буквально! Сперма была у нее на лице, на животе, на ногах, на волосах… 
      Ответить
      • Что за????
        Ответить
        • Не нервничайте, больной. Это у Вас галлюцинации.
          Ответить
          • Ты реальный или бот? А то уже страшно...
            Ответить
            • Я Ваш лечащий врач, но это не важно...
              Сейчас придёт медсестра и сделаем Вам укол.
              Ответить
              • Давно бы так, мне фенозепамчику, пожалуйста
                Ответить
                • Дмитрий Аналотольевич запаздывает, едет с лыжного курорта. Он просил передать, что "фенозепамчеку нет, но Вы держитесь"
                  Ответить
                  • Можно цитаток набрать побольше или хотя бы вореций добавить? (У меня на гитхабе лежит целых джва генератора, созданных сообществом ГК) А то иначе очень легко будет заблочить всё это повторение.
                    Ответить
                    • У нас в больнице статистика уволили, за пьянство.
                      Не желаете к нам?
                      Ответить
                      • Извините, я тонкая творческая личность. Ещё быстрее сопьюсь. Я уж лучше как-то на расстоянии, а то как пациента заберёте ещё.
                        Ответить
                        • Возможно, я не имею права разглашать столь личную информацию, но моя клятва утратила силу с падением СССР.

                          Борманда забрали мы.
                          Ответить
            • Снимайте трусики.
              Ответить
    •  - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета. 
      Ответить
    • – У вас у мужиков, по утрам, он безо всякого возбуждения так торчит, что любо дорого. Ну, вот я… и… – Я закрыл ей рот поцелуем, а когда оторвался, то зашептал ей в лицо
      Ответить
    • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было. 
      Ответить
    • Мы забрызгивали Натку спермой с головы до ног! Буквально! Сперма была у нее на лице, на животе, на ногах, на волосах… 
      Ответить
    • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было.
      Ответить
    • У жeны oкaзaлся любoвник, и я уeхaл, брoсив всё, в дaльнee Пoдмoскoвьe, гдe у мeня былa oднoкoмнaтнaя квaртирa
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • У жeны oкaзaлся любoвник, и я уeхaл, брoсив всё, в дaльнee Пoдмoскoвьe, гдe у мeня былa oднoкoмнaтнaя квaртирa
      Ответить
    • И я её люблю. Не за деньги, не за грудь 5-го размера, и даже не за волшебный минет. Я люблю её просто так, просто потому, что она есть, просто потому, что она моя Марго!
      Ответить
    • Эта история произошла со мной, когда мне едва исполнилось 18 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • Я достаточно долгое время живу за рубежом, поэтому как-то проще уделять время своим шалостям. Никто особо не третирует за вопрос бисексуальности, хотя и в самой моей бисексуальности есть тонкости.
      Ответить
    • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос… 
      Ответить
    • Потом парень заканчивал, снимал презик, бросал его на пол, а эта самка ожидала следующего героя. Иногда за вечер через Наткину вагину «проходило» до двух десятков парней!
      Ответить
    • – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!
      Ответить
    • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос…
      Ответить
    • На краю кровати безжизненным телом лежала Настя ее всю в сенниках, ссадинах и кровоподтеках трахал какай-то пидар.
      Ответить
    • Мы забрызгивали Натку спермой с головы до ног! Буквально! Сперма была у нее на лице, на животе, на ногах, на волосах…
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос… 
      Ответить
    • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
      Ответить
    • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было.
      Ответить
    • У жeны oкaзaлся любoвник, и я уeхaл, брoсив всё, в дaльнee Пoдмoскoвьe, гдe у мeня былa oднoкoмнaтнaя квaртирa
      Ответить
    • Потом ее перевернули на живот, и стали трахать в попу, снова один за другим, матерясь и нанося удар за ударом. 
      Ответить
    • Эта история произошла со мной, когда мне едва исполнилось 18 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
      Ответить
    • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было. 
      Ответить
    • Эта история произошла со мной, когда мне едва исполнилось 18 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
      Ответить
    • Входя в квартиру, они приветливо здороваются «Здрасьте, тёть Наташ!», а уже через десяток минут лежали на ее прекрасном теле, вгоняли в ее «пизду» свой «хуй»
      Ответить
    • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
      Ответить
    • И я её люблю. Не за деньги, не за грудь 5-го размера, и даже не за волшебный минет. Я люблю её просто так, просто потому, что она есть, просто потому, что она моя Марго!
      Ответить
    • Входя в квартиру, они приветливо здороваются «Здрасьте, тёть Наташ!», а уже через десяток минут лежали на ее прекрасном теле, вгоняли в ее «пизду» свой «хуй»
      Ответить
    • И я её люблю. Не за деньги, не за грудь 5-го размера, и даже не за волшебный минет. Я люблю её просто так, просто потому, что она есть, просто потому, что она моя Марго!
      Ответить
    • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
      Ответить
    • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
      Ответить
    • Мы забрызгивали Натку спермой с головы до ног! Буквально! Сперма была у нее на лице, на животе, на ногах, на волосах… 
      Ответить
    • – У вас у мужиков, по утрам, он безо всякого возбуждения так торчит, что любо дорого. Ну, вот я… и… – Я закрыл ей рот поцелуем, а когда оторвался, то зашептал ей в лицо
      Ответить
    • Я стал ласкать их. У них, был свой вкус. Не такой, как у Наташкиных, и не такой, как у других женщин, а особый, только ей принадлежащий, волшебный вкус. 
      Ответить
    • Я достаточно долгое время живу за рубежом, поэтому как-то проще уделять время своим шалостям. Никто особо не третирует за вопрос бисексуальности, хотя и в самой моей бисексуальности есть тонкости.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • - Давай-ка задом, мила, - я шлёпнул Елену по ляжке, и она неловко перевернулась, встала на колени, высоко подняла зад.
      Ответить
    • показать все, что скрыто
      – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит! 
      Ответить
      • Ну что за вульгарные у Вас выражения, доктор...
        Ответить
    • я хотела буквально всё - хотела попробовать член, отдаться в киску и всё такое. Я очень часто плакала когда была дома, по этому поводу, потому что желания и секс - фантазии буквально разрывали мой мозг, и только когда я мастурбировала, организм успокаивался и затихало на время дичайшее желание.
      Ответить
    • Из кoлeи выбилo кaпитaльнo и, приeхaв нa aвтoбусe oбрaтнo в Oзёры, купил в мaгaзинe вoдки, нaпился дoмa, в oднo лицo, дo свинскoгo сoстoяния.
      Ответить
    • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
      Ответить
    • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
      Ответить
    • Из кoлeи выбилo кaпитaльнo и, приeхaв нa aвтoбусe oбрaтнo в Oзёры, купил в мaгaзинe вoдки, нaпился дoмa, в oднo лицo, дo свинскoгo сoстoяния.
      Ответить
    • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • Из кoлeи выбилo кaпитaльнo и, приeхaв нa aвтoбусe oбрaтнo в Oзёры, купил в мaгaзинe вoдки, нaпился дoмa, в oднo лицo, дo свинскoгo сoстoяния.
      Ответить
    • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос…
      Ответить
    • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было. 
      Ответить
    • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
      Ответить
    • Потом парень заканчивал, снимал презик, бросал его на пол, а эта самка ожидала следующего героя. Иногда за вечер через Наткину вагину «проходило» до двух десятков парней!
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить
    • У жeны oкaзaлся любoвник, и я уeхaл, брoсив всё, в дaльнee Пoдмoскoвьe, гдe у мeня былa oднoкoмнaтнaя квaртирa
      Ответить
    • я хотела буквально всё - хотела попробовать член, отдаться в киску и всё такое. Я очень часто плакала когда была дома, по этому поводу, потому что желания и секс - фантазии буквально разрывали мой мозг, и только когда я мастурбировала, организм успокаивался и затихало на время дичайшее желание. 
      Ответить
    • показать все, что скрыто
      Потом ее перевернули на живот, и стали трахать в попу, снова один за другим, матерясь и нанося удар за ударом. 
      Ответить
    • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
      Ответить

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