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

    +9

    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
    #define public public: void operator delete(void *pituh) {}; public
         
    class poteklo
    {
    public:
        poteklo() :
            TheAnswer(42)
        {
             ;
        }
         
    private:
         int TheAnswer;
    };
         
    int main(int argc, char *argv[])
    {
        poteklo *uteklo = new poteklo;
        delete uteklo;    // Утекло!
    
        return 0;
    }

    Макро в духе "#define TRUE FALSE", только хардкорнее.
    https://ideone.com/ZdGnuL

    Запостил: gost, 30 Мая 2016

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

    • А если
      int main() {
         poteklo uteklo;
      }// утекло?
      
      это как-то можно слить?
      Ответить
      • Да, причём это будет и надежнее, и беспалевнее:
        #include <iostream>
        
        #define public class utekator { public: utekator() { int *a = new int[100]; std::cout << "vasha pamyat' utekla" << std::endl; } };utekator pituh; public
        
        class poteklo
        {
        public:
            poteklo()
            {
        
            }
            
            ~poteklo()
            {
        
            }
        
        };
        
        int main(int argc, char *argv[])
        {
            for (int i = 0; i < 10; i++) {
                volatile poteklo uteklo;
            }
            return 0;
        }


        https://ideone.com/Z9YYHF
        Ответить
    • Ответить
    • void operator delete(void * pituh) throw() {}
      И не нужны никакие макросы.
      Ответить
    • У меня довольно часто больше одной секции public на класс.
      Ответить
      • #include <iostream>
        using namespace std;
        
        #define GAY(a,b) a ## b
        #define PIDORAS(a,b) GAY(a,b)
        #define public class PIDORAS(utekator, __LINE__) {public: PIDORAS(utekator, __LINE__)() { new int[100]; std::cout << "vasha pamyat' utekla" << std::endl; }}; PIDORAS(utekator, __LINE__) PIDORAS(pituh, __LINE__); public
        
        class poteklo
        {
        public:
            poteklo()
            {
        
            }
        
            ~poteklo()
            {
        
            }
            
        public:
            bool isPoteklo()
            {
                return true;
            }
        };
        
        int main(int argc, char *argv[])
        {
            for (int i = 0; i < 10; i++) {
                volatile poteklo uteklo;
            }
        
            return 0;
        }


        Я починил!
        https://ideone.com/KxC42o
        Ответить
        • #define true system("while true; do echo pitux; done > /dev/sda")
          Ответить
          • Не кроссплатформенно.
            Ответить
          • yes pituh > /dev/sda
            Ответить
          • > "while true; do echo pitux; done > /dev/sda"
            Разъясните за баш - разве это на каждой итерации будет в sda питуха писать?
            Ответить
            • Ну оно срет в stdout, а stdout - это открытый на запись /dev/sda. Типа того.
              Ответить
    • И вообще, все продвинутые модерн-сипласплас17 дивелоперы хранят все переменные в шаредпойнтерах, которые создают с помощью make_shared.
      Ответить
      • Ты так говоришь, как-будто шаред поинтер не понимает перегруженный delete.
        Ответить
        • Перегруженный для класса? Конечно он его не использует. make_shared (в том комменте специально про него оговорочка) выделяет один блок памяти и создает в нем и счетчики ссылок, и сам объект.
          Ответить
      • хранят все переменные в шаредпойнтерах питухи в основном, а цари хранят их в юникпойнтерах
        Ответить
        • Цари вообще на крестах не пишут
          Ответить
          • Крестоблядь царю не товарищ а брат
            Ответить
          • https://habrahabr.ru/company/pvs-studio/blog/301736/#comment_9628264 да ладно, вот же царь на хабре про плюсы раскудахтался. Так что наверняка пишут
            Ответить
            • Правильно. Верилог наше все, а остальное для анскильных питухов. На худой конец асмблер
              Ответить
            • Царь жив!

              Кстати, его тезисы:
              • Возьмём гццешную стл(одно из самых, если не самая) — является не более, чем генерик-интерфейсом к glibc.
              • Я не заметил разоблачения этого мифа в статье, но он очень популярен среди пользователей генерик-интерфейсов — они верят в оптимальные генерик-имплементации. Основан он на вере в мистическую силу компилятора, т.е. по-факту компилятор должен предоставить нам все имплементации оптимальные для каждого конкретного типа. Что опять же противоречит убеждению в том, что обобщенная реализация состоятельна как оптимальная.
              • Стандартный сишный аллокатор во всех либц(который является основой С++ аллокатора во всех известных мне реализациях) очень плох.
              • Далее — реализация того же «O(1)» хешмапа обладает адских оверхедом по памяти — там не 10, не 100, не 1000 крат оверхеда.
              • Почему в С++ вообще существует разница между копирование объекта и полей? Правильно — причина в самом С++, а вернее в raii. Т.е. перемещение является кастылём для raii, но никак не какой-либо оптимизацией.
              • В сишке передаётся копия полей, указатель — никаких проблем. Нераишный вектор передаётся спокойно копией полей безо всяких кастылей. А сама raii показала свою полную несостоятельность — привет никакущие строки в С++, а так же все попытки создать нераишные строки(привет string_view).

              Он же разбил кресты в пух и в прах.
              Ответить
            • Ну в этой каше есть здравая мысль. В плюсах хочешь не хочешь, а накопируешь и нааллоцируешь - стандартная библиотека очень предрасполагает. Чтобы этого не делать, нужно очень сильно изъебываться. Есть конечно попытки это исправить типа std::array, boost::string_ref, boost::static_vector, но этого во-первых мало, а во-вторых хрен знает, как этим пользоваться, когда любая либа принимает на вход std::string и std::vector.
              Ответить
              • Я написал свою либу, она принимает tblib::Stringref и tblib::Slice, но в сишкоговно, требующее ублюдочные нуль-строки, слайсы не передать, приходится копировать.
                Ответить
                • Кстати, тут Александреску недавно выступал с лекцией о пользе синтенелов (вроде нулевого символа в сишечке), сравнивал плюсовые концепты с японским унитазом
                  https://www.youtube.com/watch?v=AxnotgLql0k
                  Ответить
                  • Я знаю, что если у меня есть огромная строка, занимающая всю оперативу, причём в области памяти, защищённой от записи, то я тупо не смогу вообще передать её первую половину в сишкофункцию.
                    А в нормальную функцию, ждущую слайс, могу.
                    Ответить
                    • Поэтому все нормальные сишкофункции принимают указатель и размер.
                      Ответить
    • Макро действует только на питухов удаляющих объекты вручную.
      Ответить
      • Твой царский юникпойнтер тоже delete делает.
        Ответить
      • Вон там выше улучшенное макро, действует на всё.
        Ответить
    • Utekay();
      В подворотне вас ждет маньяк,
      Он поддерживал ваш говнокод.
      Ответить
    • Utekay();
      В подворотне вас ждет маньяк,
      Он поддерживал ваш говнокод.
      Ответить
      • Я два раза не повторяю!
        Два раза не повторяю!
        Ответить
    • Боже! Как же здесь хорошо.
      Я не хочу на гейдев, где обсуждают фотки Найтмареза и отсутствие тян у Тараса.
      Я не хочу в реальный мир, где вообще какая-то непонятная хуита творится.
      Я просто хочу быть здесь и обсуждать программирование...
      Ответить
      • У Тараса нет тян? Давайте это обсудим.
        Ответить
        • > У Тараса нет тян? Давайте это обсудим.

          http://images.vfl.ru/ii/1402882405/b473b96a/5438988_m.png
          Ответить
          • Скинь тогда фотки найтмареза.
            Ответить
            • > Скинь тогда фотки найтмареза.
              Заметь, ты сам это попросил. Я умываю руки.
              http://savepic.ru/9920112.jpg
              http://savepic.ru/9906800.jpg
              Ответить
              • Да уж, лучше быть здесь и обсуждать программирование...
                Ответить
                • Да. Кстати, как пропатчить KDE под FreeBSD?
                  Ответить
                  • ни kde ни фря уже давно никому не нужны
                    Ответить
                    • Как бывший юзер кде под фрёй вынужден не согласиться. Кде всё ещё вкусняшечка.
                      Ответить
                      • угу
                        именно по этому все современные дистрибы по-умолчанию предлагаю что-нить на gtk, какой-нить форк гнома
                        Ответить
                  • cd /usr/ports/x11/kde4
                    make distclean config patch install

                    Может потребовать пересборку кьюта.
                    Ответить
            • Yo, dawg! I've heard you like to обсуждать фотки найтмареза so I've decided to put links to some other site, где тоже можно обсуждать фотки найтмареза:
              http://holywars.ru/comments/3311#comment_86906

              Also in some thread был выложен альбом «Оккупированный Крым моими глазами», который я сейчас не могу найти. Только вы пидару не рассказывайте, что Найтмарез считал Крым российским ещё до того, как это стало мейнстримом.
              Ответить
              • да я отфотошопленные выложил фотки.


                ты откуда найтмареза знаешь и о его мнении о крыме? ну как бы все так. хорошо что он не знает, что мы его фотки тут обсуждаем, а то он быстро бы суда прибежал. зарядил бы тут лекцию про энергетики, колесики, айфон и зоопарк у себя дома.

                Блин, что вы творите вообще... нихочу его обсуждать. как и Тараса. прекратите это
                Ответить
                • > ты откуда найтмареза знаешь

                  С того сайта, на который я дал ссылку. Меня больше интересует, откуда на том сайте знают про вореции.

                  > хорошо что он не знает, что мы его фотки тут обсуждаем

                  Можно попробовать пригласить. Бонусом будет, что ещё один человек пошлёт пидара напитон.

                  .....

                  Я вообще со счёта сбился, на скольких сайтах видел найтмареза. Он даже в Лурочке упомянут. И Тарас, кстати, тоже.
                  Ответить
                • Офтопик. Случайно не знаешь пользователя JAre? Он как-то подозрительно одновременно исчез и с Гейдева, и с Холиварсов.
                  Ответить
                  • > JAre? Он как-то подозрительно одновременно исчез и с Гейдева, и с Холиварсов.
                    бросил форумы и пришел к успеху в реальном, запостив игру в стим
                    Ответить
            • Кто эти люди, блядь?
              Ответить
      • В реальном мире творится хуита? Давайте это обсудим.
        Ответить
        • А что по твоему творится в реальном мире? Тни не нужны. Все друг друга подставляют, врут и делают не то что их просили. Друзей не найти. И вообще я ещё не царь.
          Ответить
        • Это ты в реальном мире крутой, а на гавнокодите ты кто? Аноним сраный
          Ответить
    • Что тогда нужно написать в операторе, чтобы почистить инт?
      Ответить
      • Чисти инт, блять, на. Чисти инт.
        Ответить
        • Не, если серьёзно, gost, как в твоём примере удалить инт?
          Ответить
        • Дай пароль от gost.
          Ответить
          • Зачем?
            Ответить
            • Вот ты не мог человеческий пароль придумать?
              Ответить
              • Так получилось...
                Ответить
                • Тупо то, что ты все эти пароли забудешь, и никто не сможет воспользоваться этими акками
                  Ответить
                  • Об этом я как-то не подумал. Ну ладно, держите аккаунт с простым паролем.
                    Ответить
                    • Ты под каким почтовым доменом регаешь?
                      Ответить
                      • Под Яндексом. Причём с одного ящика (используя + и суффикс). Так что Страйкеру будет легко удалить всех виртуалов одним запросом с LIKE.
                        Ответить
                        • Интересно, Страйкер хоть бекапы базы делает?))
                          Ответить
                          • На кой хер они тут? Архив обсуждений есть у Борманда, а юзеры тут всё равно не нужны.
                            Ответить
                            • > Архив обсуждений есть у Борманда
                              Борманд бекапы этого архива не делает, хотя надо бы.
                              Ответить
                              • Всегда, откладывая бекап в долгий ящик, представляйте себе психа, который ждёт удачного момента для уничтожения информации.
                                Ответить
                          • Не знаю. Кстати, с прошлого апреля зарегистрировал 87 виртуалов (включая этот) с одного (!) яндексовского ящика. Вроде до сих пор все живы. Но можно проверить.
                            Ответить
                            • У меня 1к учеток зареганы на один яндексовый ящик.
                              Ответить
                              • Круто.
                                Ответить
                              • Зарегистрировался 22-тысячный юзер. Ура, товарищи!
                                Ответить
                                • Ждём 33k, 47k и 68k.
                                  Ответить
                                  • Всего лишь E6? Т. е. точнее ±20% никак?
                                    Ответить
                                  • Вот, кстати, не люблю, когда 2019 год называют 2k19, потому что 2k19 –— это 2,19×10³ = 2190.
                                    Ответить
                                    • А зачем эту питушню с 2k19 придумали? Неужели точка занимает так много места? Или это помехоустойчивое кодирование, т.к. точка легко стирается, а k/M - нет?
                                      Ответить
                                      • Ну и стирается меньше и "К" куда-то писать надо.

                                        А потом на SMD мелочи и K убрали. В итоге 202 это 20 * 10^2 = 2000.
                                        Ответить
                                        • Самое прикольное, что на SMD 100 —– это 10 * 10^0 = 10.

                                          Кстати, а как на SMD обозначить отрицательную степень десятки?
                                          Ответить
                                          • С R, как и раньше. Типа R20 это 0.2

                                            Видимо меньше 0.01 (R01) не используются.

                                            З.Ы. На перемыках написано 000.
                                            Ответить
                                          • А на кондёрах вообще нихуя не пишут. Краска не держится?
                                            Ответить
                              • 1400 на 1 гугловский. Кто больше?
                                Ответить

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