Size: a a a

2020 September 10

R

Ruben in pro.cxx
5 раз проверял и не заметил
источник

АР

Андрей Руссков... in pro.cxx
Чет не могу понять одну штуку про new/delete expressions с align_val_t:

The alignment requirement is passed as the optional std::align_val_t argument. (since C++17)

вот выделил я память как
auto p = new (std::align_val_t(32)) int[16];
Какой будет правильный delete для этого p?
delete[] p; ?
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
Чет не могу понять одну штуку про new/delete expressions с align_val_t:

The alignment requirement is passed as the optional std::align_val_t argument. (since C++17)

вот выделил я память как
auto p = new (std::align_val_t(32)) int[16];
Какой будет правильный delete для этого p?
delete[] p; ?
If the alignment parameter is not present, ptr was returned by an allocation function without an alignment parameter.
If present, the alignment argument is equal to the alignment argument passed to the allocation function that returned ptr.

как я понимаю, нужно и delete выравнивание передать
источник

VS

Vlad Serebrennikov in pro.cxx
это из предусловий http://eel.is/c++draft/new.delete.array#11
источник

АР

Андрей Руссков... in pro.cxx
отлично, указать его обязательно. Теперь внимание вопрос... Как его указать?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
зачем delete знать про выравнивание?
источник

АР

Андрей Руссков... in pro.cxx
operator delete[](p, std::align_val_t(32)); ?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
а, для массива.
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
operator delete[](p, std::align_val_t(32)); ?
похоже на то
источник

N

Neargye in pro.cxx
Андрей Руссков
operator delete[](p, std::align_val_t(32)); ?
Да, в стандарте
operator delete[](ptr, alignment)
источник

VO

Vyacheslav Olkhovche... in pro.cxx
хотя все равно не логично и странно.
источник

ВМ

Василий Мартынов... in pro.cxx
Добрый день, не знаете,  есть ли аналогичный C# чатик? А то не нашел ничего, а вопросец есть
источник

FS

Flower Surgeon in pro.cxx
Василий Мартынов
Добрый день, не знаете,  есть ли аналогичный C# чатик? А то не нашел ничего, а вопросец есть
источник

m

magras in pro.cxx
Vyacheslav Olkhovchenkov
хотя все равно не логично и странно.
А что в этом странного? Если был запрошен over alignment расположение метаданных может зависеть от выравнивания.
источник

VO

Vyacheslav Olkhovche... in pro.cxx
зачем бы ему зависеть?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
а дальше в метаданных уже можно всю информацию иметь.
источник

VO

Vyacheslav Olkhovche... in pro.cxx
это как говорить что free() нужно знать размер указанный в malloc(), ведь от этого может зависеть расположение метаданных
источник

m

magras in pro.cxx
Vyacheslav Olkhovchenkov
это как говорить что free() нужно знать размер указанный в malloc(), ведь от этого может зависеть расположение метаданных
Так в новых стандартах есть operator delete, который получает размер аллокации. Это позволяет строить более эффективные аллокаторы.
источник

f

for(int c; (c = getc... in pro.cxx
При компиляции есть какие-нибудь неявно определенные символы которые влияют на то как проходит работа с системными заголовочными файлами?

Если сделать #include <vector> и дампнуть результат то он отличается от того что получается если вставить содержимое vector в код напрямую.
источник

NP

Nikita Provotorov in pro.cxx
for(int c; (c = getchar()) != EOF;)
При компиляции есть какие-нибудь неявно определенные символы которые влияют на то как проходит работа с системными заголовочными файлами?

Если сделать #include <vector> и дампнуть результат то он отличается от того что получается если вставить содержимое vector в код напрямую.
а как вы делаете #include <vector>?
источник