Resultados da pesquisa a pedido "strict-aliasing"

2 a resposta

será transmitido em torno de sockaddr_storage e sockaddr_in quebrando o aliasing estrito

Seguindo o meu anteriorPergunta, questão [https://stackoverflow.com/questions/42176962/fill-sockaddr-storage-struct-with-values-of-sockaddr-in] , Estou realmente curioso sobre esse código - case AF_INET: { struct sockaddr_in * tmp = ...

1 a resposta

Gerando buffer de bytes com eficiência, sem interromper o aliasing estrito

Esse é um padrão tão simples que deve haver uma maneira "agradável" de resolvê-lo. Eu tenho uma função que precisa gerar uma matriz de bytes de tamanho dinâmico contendo dados aritméticos. // Given that I have a function that kinda looks like ...

1 a resposta

Um ponteiro std :: byte tem as mesmas implicações de alias do char *?

As regras estritas de aliasing de C ++ (e C) incluem que umchar* eunsigned char* pode usar qualquer outro ponteiro. AFAIK não existe uma regra análoga parauint8_t*. Assim, minha pergunta: quais são as regras de alias para ...

2 a resposta

Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando?

Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer);Faza eb diferem de ...

1 a resposta

A herança via desenrolamento viola a regra estrita de aliasing?

Eu tenho um struct X que herda de struct Base. No entanto, na minha configuração atual, devido ao alinhamento, o tamanho de X é 24B: typedef struct { double_t a; int8_t b; } Base; typedef struct { Base base; int8_t c; } X;Para economizar ...

2 a resposta

É um comportamento indefinido `reinterpret_cast` a` T * `a` T (*) [N] `?

Considere o seguinte cenário: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()); (*p)[0] = 42;É istocomportamento indefinido? Eu acho que é. a.data() retorna umint*, que não é o mesmo queint(*)[8] oregras de alias de ...

2 a resposta

É uma violação estrita de aliasing alias a struct como seu primeiro membro?

Código de amostra: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) }Eu acredito que isso é comum e considerado aceitável. O padrão garante que não haja preenchimento inicial na estrutura. ...

2 a resposta

Dar aos dados um tipo eficaz conta como efeito colateral?

Suponha que eu tenha um pedaço de dados alocados dinamicamente: void* allocate (size_t n) { void* foo = malloc(n); ... return foo; }Desejo usar os dados apontados porfoo como um tipo especial,type_t. Mas eu quero fazer isso mais tarde, e não ...

2 a resposta

Aliasing estrito do C ++ quando não estiver usando o ponteiro retornado pelo posicionamento new

Isso pode causar um comportamento indefinido? uint8_t storage[4]; // We assume storage is properly aligned here. int32_t* intPtr = new((void*)storage) int32_t(4); // I know this is ok: int32_t value1 = *intPtr; *intPtr = 5; // But can one of the ...

3 a resposta

Regra estrita de alias e ponteiros 'char *'

A resposta aceita paraQual é a regra estrita de alias? [https://stackoverflow.com/a/99010]menciona que você pode usarchar * para alias outro tipo, mas não o contrário. Não faz sentido para mim - se tivermos dois ponteiros, um do tipochar * e ...