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

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

30 ответов

29 просмотров

Куда угодно

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта