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

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
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 kir_rik, (Updated )

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

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

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

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

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

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


    8