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

    +46.3

    1. 1
    delete ptr + int(ptr=0);

    Освобождение памяти и обнуление указателя.

    Запостил: k06a, 11 Августа 2009

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

    • ибанутый программер..
      Ответить
    • типа умный
      Ответить
    • Ха-ха-ха... Дебил.
      Ответить
    • Скотина тупая!!!
      Ответить
    • Ох, как круто умеет чувак :D Жалкий неудачник...
      Ответить
    • Будешь перед мамой выделываться, типа, - посмотри какой я крутой программист, как я умею :D
      Ответить
    • юморист писал никак)
      Ответить
    • Можно прокомментировать логику программиста?
      Зачем он написал "+ int(ptr = 0)"
      Ответить
    • Может обфускатор сработал.
      Ответить
    • Можно было и через запятую написать...

      delete ptr, ptr = 0;
      Ответить
      • Через запятую пишут так:
        delete ptr = 0, ptr;
        В коде выше будет delete NULL;
        Ответить
    • так еп - эта херня же выдаст ошибку времени выполнения если ее запустить.
      вот вариант
      delete ptr, ptr = 0;
      действительно хоть и тоже дурной но рабочий
      Ответить
      • IMHO, выдаст или не выдаст ошибку, зависит от компилятора. Порядок выполнения операций (delete ptr) и (ptr = 0) не определён. В случае с запятой определён (операции, перечисленные через запятую, выполняются слева направо).
        Ответить
        • Предыдущий коммент не читать. Ведь delete имеет меньший приоритет, чем «+» :) Выходит, что никакой ошибки времени выполнения не будет.
          Ответить
        • Хотя да.... (ptr + int(ptr=0)) выглядит подозрительно и может (должен?) давать 0, что к ошибке приведёт.
          Ответить
          • delete 0, согласно стандарту С++, безвреден и ошибок не вызывает. Просто будет утечка памяти, на которую указывал ptr.
            Ответить
    • утечка памяти. студенты (и даже некоторые профессора) и не такое пишут...
      Ответить

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