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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <iostream>
    using namespace std;
     
    struct Foo {char a; int b; char c;};
    struct Bar {char a; char b; int c;};
     
     
    int main() {
    	cout << sizeof(Foo) << endl;
    	cout << sizeof(Bar) << endl;
    }

    https://ideone.com/XKWey3

    Какой бароп )))

    Запостил: 3_dar, 08 Октября 2020

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

    • Анскильный оптимизатор не может догадаться переставить поля местами. Потому что в 99.99% случаев мне поебать на порядок, всё ради 0.01% пердоликов байтоблядей.
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Надо написать говностандатризаторам, чтоб в крестопарашу добавить особую питушню, которая б оптимально распихивала поля в структуре, чтоб и unaligned доступа не было, и чтоб плотно, типа
      struct Foo __do_optimal_shit({char a; int b; char c;});

      становилось как

      struct Foo {char a; char c; int b;};
      Ответить
      • Согласен. Хорошее решение. Либо новые литералы, например real_struct и real_class.
        Ответить
        • Вот да, добавим в крестопарашу побольше всякой херни. Настоящие четкие пацаны пользуются только реальными вещами, real_struct, real_class, mysql_real_escape_string
          Ответить
          • А что, это не шутка. Это позволяет перемешивать поля одинаково везде, вне зависимости от компилятора и уровня оптимизации.
            Ответить
          • Не только в крестопарашу, в Си тоже.
            Ответить
        • У «gcc» есть атрибуты «aligned» и «packed», чтобы ты мог указать, что тебе важнее: экономить память или получить быстрый доступ.

          https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#Common-Type-Attributes
          Ответить
          • Эти атрибуты указывают компилятору что вот можно насрать на требования выравнивания, и всю хуйню зожать. А тут же речь идет о перестановки полей в структуре, чтобы описывать их можно было в хуйпойми каком порядке, но компилятор их распихал так, чтоб и рыбку съесть, и на хуй сесть и дыр не было, и невыровненного доступа не было, а на порядок хуйни в структуре нам насрать.
            Ответить
          • Я знаю. Раз такое есть, то не составит труда ввести питушню, которую предлагает j123123. И включить её по умолчанию. Это экономия по памяти без ущерба к доступу.
            Ответить
    • Опять выравниваешь, шакал ебучий?
      Ответить
    • Попробуй атрибут [[no_unique_address]] кста. Вроде как с ним конпелятор будет более свободно обращаться с полями.
      Ответить

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