Size: a a a

2021 July 12

IZ

Ilia Zviagin in supapro.cxx
да
источник

Q

Q in supapro.cxx
у меня есть указатель на массив struct {unsigned char a;}, нужно передать указатель на массив unsigned char без reinterpret_cast
источник

IZ

Ilia Zviagin in supapro.cxx
Не нужно без reinterpret_cast.
Ну или если там void*  в сигнатуре, то можно и без.
источник

AS

Anatoly Shirokov in supapro.cxx
Нельзя этот указатель передать вместо указателя на unsigned char
источник

TS

Till Schneider in supapro.cxx
cpp code:
struct X {
  unsigned char a;
};
X* data = new X[42];
[](unsigned char* data) {}(reinterpret_cast<unsigned char*>(data));
delete[] data;


output:
<empty>
источник

IZ

Ilia Zviagin in supapro.cxx
Надо было ещё замыкания и destructuring добавить, чтобы ему в конец крышу сорвало...
источник

TS

Till Schneider in supapro.cxx
Это в следующий раз)
источник

Q

Q in supapro.cxx
указатель на массив struct{unsigned char a;} можно через memcpy сделать указателем на unsigned char, и передать в функцию (sizeof структуры и unsigned char одинаков), вопрос в том - достаточно ли этого для strict aliasing rule как здесь описано https://habr.com/ru/company/otus/blog/443602/
или нужно делать отдельную копию массива уже сразу unsigned char, делать memcpy из массива структур, и тогда передавать указатель на первый элемент нового массива
источник

TS

Till Schneider in supapro.cxx
ты можешь безопасно реинтерпреткастить в unsigned char в данном случае
источник

AS

Anatoly Shirokov in supapro.cxx
Достаточно reinterpret_cast
источник

Q

Q in supapro.cxx
нельзя reinterpret_cast
источник

Q

Q in supapro.cxx
в конкретной ситуации
источник

AS

Anatoly Shirokov in supapro.cxx
Можно
источник

Q

Q in supapro.cxx
мне его отключили, как быть то? 😂
источник

TS

Till Schneider in supapro.cxx
в данном случае можно, тем более в unsigned char!
источник

TS

Till Schneider in supapro.cxx
кто отключил-то?
источник

Q

Q in supapro.cxx
анализатор
источник

AS

Anatoly Shirokov in supapro.cxx
Методом грубой силы
источник

IZ

Ilia Zviagin in supapro.cxx
Включить обратно
источник

TS

Till Schneider in supapro.cxx
так выруби его в том месте, у всех анализаторов есть такие ручки)
источник