170 похожих чатов

Куда размещать std::string в структурах, чтобы выравнивание было оптимальным?

30 ответов

32 просмотра

Куда угодно

serfcity -fsanitize=undefined,address
В смысле?

Ну, если уж так интересно - alignof(string) зачастую равно alignof(pointer)

serfcity--fsanitize=undefined,address Автор вопроса
Александр Водянников
В прямом

Оно же должно зависеть от sizeof std::string?

serfcity -fsanitize=undefined,address
Оно же должно зависеть от sizeof std::string?

sizeof std::string всегда одинаков на данной платформе

serfcity -fsanitize=undefined,address
Оно же должно зависеть от sizeof std::string?

Выравнивание зависит от выравнивания самого выравненного члена, в случае строки - указатель

Вообще-то, оно не обязано зависеть от самого выровненного члена

Потому что внутри стринга указатель(и)

От пожелания компилятора

serfcity--fsanitize=undefined,address Автор вопроса
d7d1cd
Потому что внутри стринга указатель(и)

Это понятно, но там не 1 указатель, а десятки

다니엘(줄리아)
Вообще-то, оно не обязано зависеть от самого выров...

По стандарту без особых плясок с директивами - всë именно так. Ибо это является оптимальным для большинства платфори

다니엘(줄리아)
От пожелания компилятора

Блин, ну в подавляющем количестве случаев от выравнивания членов

serfcity -fsanitize=undefined,address
Это понятно, но там не 1 указатель, а десятки

Откуда десятки? Я могу максимум придумать три

serfcity -fsanitize=undefined,address
Это понятно, но там не 1 указатель, а десятки

Десятки? 😁 А чего не сотни? Во всех известных реализациях из либо 2 либо 1.

d7d1cd
Десятки? 😁 А чего не сотни? Во всех известных реал...

Один я ещё могу понять (cow), 3 - тоже, но 2 как?

Alexander Karaev
Один я ещё могу понять (cow), 3 - тоже, но 2 как?

как-нибудь дофига оптимизированно хранить информацию о SSO?

다니엘(줄리아)
как-нибудь дофига оптимизированно хранить информац...

Выдумать можно и полтора указателя, речь про существующие реализации

Alexander Karaev
Один я ещё могу понять (cow), 3 - тоже, но 2 как?

Эээ, указатель на начало строки и указатель на ее конец в буфере.

d7d1cd
Эээ, указатель на начало строки и указатель на ее ...

Хотелось бы посмотреть на реализацию, которая плюнула на capacity

Alexander Karaev
Хотелось бы посмотреть на реализацию, которая плюн...

Что это плюнула? Будет еще одно поле - capacity. Только оно будет не указатель, а просто size_t. А изначально речь шла именно про указатели и сколько их в классе строки.

d7d1cd
Что это плюнула? Будет еще одно поле - capacity. Т...

Насколько я помню, capacity хранят тоже в виде указателей. Было бы странно хранить size и capacity в разных формах. Перепроверю реализации попозже из любопытства

Alexander Karaev
Хотелось бы посмотреть на реализацию, которая плюн...

Символьный список можно в 16 байт уложить(можно в 8). Скорость работы будет феноменальная

Alexander Karaev
Хотелось бы посмотреть на реализацию, которая плюн...

при поддержке аллокатора можно доставать капасити оттуда и укладываться в 2 fbvector так умеет но к строке вряд ли применяется этот приём потому что уменьшение её размера это уменьшение процента SSO

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта