Articles of comportamiento indefinido

Es el resultado de printf (“% d% d”, c ++, c); también indefinido?

Recientemente encontré una publicación ¿Cuál es la respuesta correcta para cout << c ++ << c ;? y me preguntaba si la salida de int c = 0; printf (“%d %d”, c++, c); tampoco está definido? He estudiado en conferencias que los operadores de post-corrección y prefijo incrementan el valor solo después de obtener un […]

¿Una implementación en C ++ que detecta un comportamiento indefinido?

Una gran cantidad de operaciones en C ++ resultan en un comportamiento indefinido, donde la especificación es completamente muda sobre cuál debe ser el comportamiento del progtwig y permite que ocurra cualquier cosa. Debido a esto, hay todo tipo de casos en que las personas tienen código que se comstack en modo de depuración pero […]

¿Cómo implementar memmove en C estándar sin una copia intermedia?

Desde la página de manual en mi sistema: void * memmove (void * dst, const void * src, size_t len); DESCRIPCIÓN La función memmove () copia los bytes len de string src a string dst. Las dos cadenas pueden superponerse ; la copia siempre se hace de una forma no destructiva manera. Del estándar C99: […]

¿Cuál es la forma correcta de escribir un testando un flotante en un int y viceversa?

El siguiente código realiza una operación de raíz cuadrada inversa rápida mediante algunos hacks de bits. El algoritmo probablemente fue desarrollado por Silicon Graphics a principios de los 90 y también apareció en Quake 3. más información Sin embargo, recibo la siguiente advertencia del comstackdor C ++ de GCC : desreferenciar puntero tipo-punteado romperá las […]

¿Por qué el comportamiento aritmético del puntero fuera de los límites es indefinido?

El siguiente ejemplo es de Wikipedia . int arr[4] = {0, 1, 2, 3}; int* p = arr + 5; // undefined behavior Si nunca dejo referencia a p, entonces ¿por qué arr + 5 solo comportamiento indefinido? Espero que los punteros se comporten como enteros, con la excepción de que cuando se desreferencia el […]

¿Por qué desreferenciar un puntero nulo es un comportamiento indefinido?

De acuerdo con ISO C ++, eliminar referencias de un puntero nulo es un comportamiento indefinido. Mi curiosidad es, ¿por qué? ¿Por qué el estándar ha decidido declararlo comportamiento indefinido? ¿Cuál es la razón de esta decisión? ¿Dependencia del comstackdor? No parece, porque según el estándar C99, hasta donde yo sé, está bien definido. Dependencia […]

¿Qué tan indefinido es el comportamiento indefinido?

No estoy seguro de entender el grado en que un comportamiento indefinido puede poner en peligro un progtwig. Digamos que tengo este código: #include int main() { int v = 0; scanf(“%d”, &v); if (v != 0) { int *p; *p = v; // Oops } return v; } ¿El comportamiento de este progtwig está […]

¿La memoria tiene un problema de clase de “comportamiento indefinido” en C ++?

Resulta que muchas cosas que parecen inocentes son un comportamiento indefinido en C ++. Por ejemplo, una vez que se ha delete puntero no nulo, incluso la impresión de ese valor del puntero es un comportamiento indefinido . Ahora las filtraciones de memoria son definitivamente malas. Pero, ¿en qué situación de clase están definidos, indefinidos […]

¿Está accediendo a una matriz global fuera de su comportamiento indefinido?

Acabo de tener un examen en mi clase hoy, leyendo el código C y la entrada, y la respuesta requerida fue lo que aparecerá en la pantalla si el progtwig realmente se ejecuta. Una de las preguntas declaró a[4][4] como una variable global y en un punto de ese progtwig, intenta acceder a[27][27] , así […]

¿Por qué no debería intentar usar “este” valor después de “eliminar esto”?

En este párrafo de C ++ FAQ , se discute el uso de delete this construcción. Se enumeran 4 restricciones. Las restricciones 1 a 3 parecen bastante razonables. Pero, ¿por qué hay restricción 4 allí que “no debo examinarlo, compararlo con otro puntero, compararlo con NULL, imprimirlo, echarlo, hacer algo con él”? Quiero decir, this […]