Кресты / Говнокод #22610 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Shantykoff, (Updated )

Комментарии (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. слепота (медсестра - она).

                        Приходите к нам, под пианино попляшем.
                        Ответить
                            • Сестра, мне нужно к доктору. В моём анусе застряла вилка.
                              Ответить
                              • Вот уж неутомимый больной!.. Вы нам все вилки перевели.
                                Ответить
                                • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                  Ответить
                                • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                  Ответить
                              • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                Ответить
                              • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                Ответить
                              • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                                Ответить
                          • В моей жопе тоже застряло что-то острое. Надо срочно сделать операцию.
                            Ответить
                            • Такого рода вмешательство может повредить ваш задний проход.
                              Ответить
                              • Скажите, доктор, где можно починить испорченный проход?.. Это возможно?..
                                Ответить
    • Да, про х == 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 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
    Ответить
  • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
    Ответить
  • Я достаточно долгое время живу за рубежом, поэтому как-то проще уделять время своим шалостям. Никто особо не третирует за вопрос бисексуальности, хотя и в самой моей бисексуальности есть тонкости.</b></b>
    Ответить
  • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос… 
    Ответить
  • Потом парень заканчивал, снимал презик, бросал его на пол, а эта самка ожидала следующего героя. Иногда за вечер через Наткину вагину «проходило» до двух десятков парней!
    Ответить
  • – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!
    Ответить
  • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос…
    Ответить
  • На краю кровати безжизненным телом лежала Настя ее всю в сенниках, ссадинах и кровоподтеках трахал какай-то пидар.
    Ответить
  • Мы забрызгивали Натку спермой с головы до ног! Буквально! Сперма была у нее на лице, на животе, на ногах, на волосах…
    Ответить
  • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
    Ответить
  • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
    Ответить
  • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос… 
    Ответить
  • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
    Ответить
  • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было.
    Ответить
  • У ж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 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.</b></b>
    Ответить
  • - Ну вот, - отвечает, - это и есть моя главная проблема на сегодняшний день: как сделать так, чтобы даже поллюций не было. 
    Ответить
  • Эта история произошла со мной, когда мне едва исполнилось 18 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
    Ответить
  • Входя в квартиру, они приветливо здороваются «Здрасьте, тёть Наташ!», а уже через десяток минут лежали на ее прекрасном теле, вгоняли в ее «пизду» свой «хуй»
    Ответить
  • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
    Ответить
  • И я её люблю. Не за деньги, не за грудь 5-го размера, и даже не за волшебный минет. Я люблю её просто так, просто потому, что она есть, просто потому, что она моя Марго!</b>
    Ответить
  • Входя в квартиру, они приветливо здороваются «Здрасьте, тёть Наташ!», а уже через десяток минут лежали на ее прекрасном теле, вгоняли в ее «пизду» свой «хуй»
    Ответить
  • И я её люблю. Не за деньги, не за грудь 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
    Ответить
  • я хотела буквально всё - хотела попробовать член, отдаться в киску и всё такое. Я очень часто плакала когда была дома, по этому поводу, потому что желания и секс - фантазии буквально разрывали мой мозг, и только когда я мастурбировала, организм успокаивался и затихало на время дичайшее желание. 
    Ответить
  • Потом ее перевернули на живот, и стали трахать в попу, снова один за другим, матерясь и нанося удар за ударом. 
    Ответить
  • Я быстро вынул член и перебрался к елениной голове, она сразу же забрала весь член в рот и после нескольких охватывающих движений глоткой с наслаждением всосала в себя всё, что я выплеснул из члена.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8