Articles of indefinido comportamento

Onde exatamente o padrão C ++ diz que desreferenciar um ponteiro não inicializado é um comportamento indefinido?

Até agora não consigo descobrir como deduzir que o seguinte: int* ptr; *ptr = 0; é um comportamento indefinido. Primeiro de tudo, há 5.3.1 / 1 que afirma que * significa indireção que converte T* em T Mas isso não diz nada sobre a UB. Em seguida, há muitas vezes citado 3.7.3.2/4 dizendo que usando […]

A variável local não inicializada é o gerador de número random mais rápido?

Eu sei que a variável local não inicializada é o comportamento indefinido ( UB ), e também o valor pode ter representações de armadilha que podem afetar outras operações, mas às vezes eu quero usar o número random somente para representação visual e não as utilizarei em outra parte programa, por exemplo, definir algo com […]

O comportamento do “struct hack” é tecnicamente indefinido?

O que eu estou perguntando é o bem conhecido truque “último membro de uma estrutura tem comprimento variável”. É algo assim: struct T { int len; char s[1]; }; struct T *p = malloc(sizeof(struct T) + 100); p->len = 100; strcpy(p->s, “hello world”); Devido à forma como a estrutura é disposta na memory, podemos sobrepor […]

O “Comportamento Indefinido” realmente permite que * qualquer coisa * aconteça?

EDIT: Esta questão não foi concebida como um fórum para discussão sobre o (des) mérito do comportamento indefinido, mas isso é uma espécie de o que se tornou. Em qualquer caso, este tópico sobre um compilador C hipotético sem comportamento indefinido pode ser de interesse adicional para aqueles que acham que este é um tópico […]

A boot implica conversão lvalue para rvalue? É int x = x; UB?

O padrão C ++ contém um exemplo semi-famoso de pesquisa de nome “surpreendente” em 3.3.2, “Ponto de declaração”: int x = x; Isso inicializa x com si mesmo, que (sendo um tipo primitivo) é não inicializado e, portanto, tem um valor indeterminado (supondo que seja uma variável automática). Isso é realmente um comportamento indefinido? De […]

O padrão C ++ mudou em relação ao uso de valores indeterminados e comportamento indefinido em C ++ 14?

Como abordado em A boot implica conversão de valor para rvalor? É int x = x; UB? o padrão C ++ tem um exemplo surpreendente na seção 3.3.2 Ponto de declaração em que um int é inicializado com seu próprio valor indeterminado: int x = 12; { int x = x; } Aqui o segundo […]