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

    +1001

    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
    struct Node{
        char* d;
        Node *left;
        Node *right;
    };
    
    Node* search_insert(Node *root, char* d){
         /*.........*/
        Node *pnew = new Node;
        pnew->d = d
         /*.........*/
    }
    int main(){
        /*.........*/
        Node *root=NULL;
        char* r=new char;
        for (int i = 0; i<10; i++){
                scanf("%s", r);
                root=search_insert(root, b[i]);
        }
         /*.........*/
    }

    Вот такой тупой недочет стоил мне туевой хучи времени. Не единожды стирал все и писал заново. Просветление пришло на третий день.
    Указатель.... поле в структуре - указатель... указатель в который я раз за разом лезу в цикле...

    Запостил: kir_rik, 30 Мая 2010

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

    • upd: упс, опечаточтка при посте: root=search_insert(root, r);
      Ответить
    • вот такой тупой недодроч...
      Ответить
    • Зачем динамическое выделение char* r=new char; почему нельзя было обойтись просто char r; ?
      Чтение строки (%s) в память, выделенную под символ до добра не доведет.
      Ответить
      • Стек не резиновый:))))
        Ответить
        • ...а силиконовый и вазелиновый:)
          Ответить
        • Тут дело скорее не в стеке, а в том, что человек узнал о наличии динамического выделения памяти и использует это там где надо и не надо.
          Ответить
      • Зачем динамическое выделение char* r=new char; почему нельзя было обойтись просто char r;
        Где gcc, а где и mingw
        Ответить
        • ты долбоёб их даже не отличишь
          Ответить
        • >Где gcc, а где и mingw
          Что Вы этим хотели сказать?
          Ответить
          • У меня при попытке заполнения char* переменной без предварительного new, программа вываливается. Разные компиляторы по разному воспринимают одинаковый код.
            Ответить
            • а зачем *? просто char не катит уже?
              Ответить
              • Затем, что школота узнала про указатели и теперь пихает их куда попало
                Ответить
                • Забавно... Позавчера народилось новое поколение людей, которые будут, брызгая слюнями, орать в интернетах "Школота!"
                  (с)Башорг
                  Ответить
                  • ЫЫЫ, у нас -- вчера, но учитывая этот твой пост, любой код, который ты напишешь в ближайший год, можно смело сюда постить, а вот среди школоты есть челы, котроые реально уже дохера умеюд, по крайней мере относительно написания троянов =)
                    Ответить
                    • О да, большой скилл - открыть прогу которая генерит трояны и нажать generate
                      Ответить
            • ой какой ужас, злой компилятор не дает писать в невыделенную память.. ой-ой-ой...
              Ответить
            • Стандарт один, если нет кода вызывающего Undefined Behaviour, то все номрмальные компиляторы воспринимают одинаковый код по одинаковому.
              Ответить
            • Наличие указателя еще не говорит о наличии свободной памяти адресуемой этим указателем. Ошибка распространенная для начинающего программиста. Читайте мат.часть.
              Ответить
              • Ну потому и пишу new. Противоречивые какие-то каменты.
                Ответить
                • Это не "каменты" противоречивые. А подход к реализации. Надо знать что делаешь, а не пытаться исправить код до псевдорабочего состояния путем перебора вариантов, ссылаясь на то, что "Разные компиляторы по разному воспринимают одинаковый код."
                  Ответить
                • Вы в 18-й строке пытаетесь прочитать строку в однобайтовый буфер, в который поместится лишь пустая строка (этот самый байт зохавает терминатор строки). Таким образом, налицо решето.
                  И, да, вы вырезали слишком много контекста, без него назначение кода слегка замутняется.
                  Ответить
                  • > И, да, вы вырезали слишком много контекста, без него назначение кода слегка замутняется.

                    для чего велосипедят связанные списки - это такая тайна
                    Ответить
                    • На данной стадии изучения языка это даже полезно.
                      Ответить

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