Resultados da pesquisa a pedido "strict-aliasing"

2 a resposta

Podemos acessar o membro de um objeto de tipo de classe inexistent

No padrão c ++, em [basic.lval] /11. [http://eel.is/c++draft/basic.lval#11.6] diz: Se um programa tentar acessar o valor armazenado de um objeto por meio de um valor gl de outro que não seja um dos seguintes tipos, o comportamento ...

3 a resposta

É legal reutilizar a memória de uma matriz de tipos fundamental para uma matriz de tipos diferente (mas ainda fundamental)

Este é um acompanhamento para este outroPergunta, questão [https://stackoverflow.com/q/51930334/3545273]sobre a reutilização de memória. Como a pergunta original era sobre uma implementação específica, a resposta estava relacionada a essa ...

3 a resposta

O acesso através do ponteiro altera a semântica estrita de alias?

Com estas definições: struct My_Header { uintptr_t bits; } struct Foo_Type { struct My_Header header; int x; } struct Foo_Type *foo = ...; struct Bar_Type { struct My_Header header; float x; } struct Bar_Type *bar = ...;É correto dizer que esse ...

6 a resposta

Reutilizando um buffer flutuante para dobras sem comportamento indefinido

Em uma função específica do C ++, por acaso tenho um ponteiro para um grande buffer de flutuadores que quero usar temporariamente para armazenar metade do número de duplas. Existe um método para usar esse buffer como espaço temporário para ...

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

É 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

É 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 ...

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

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

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 ...