Resultados da pesquisa a pedido "strict-aliasing"
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 = ...
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 ...
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 ...
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 ...
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 ...
É 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 ...
É 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. ...
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 ...
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 ...
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 ...