About: Undefined behavior   Goto Sponge  NotDistinct  Permalink

An Entity of Type : owl:Thing, within Data Space : dbpedia.org associated with source document(s)

In computer programming, undefined behavior (UB) is the result of executing computer code that does not have a prescribed behavior by the language specification the code adheres to, for the current state of the program (e.g. memory). This happens when the translator of the source code makes certain assumptions, but these assumptions are not satisfied during execution.

AttributesValues
rdf:type
rdfs:label
  • Undefined behavior
  • Undefiniertes Verhalten
  • Comportamiento indefinido
  • Comportamento indefinido
  • Неопределённое поведение
  • 未定义行为
rdfs:comment
  • In computer programming, undefined behavior (UB) is the result of executing computer code that does not have a prescribed behavior by the language specification the code adheres to, for the current state of the program (e.g. memory). This happens when the translator of the source code makes certain assumptions, but these assumptions are not satisfied during execution.
  • Undefiniertes Verhalten beschreibt in der Informatik Code, dessen Verhalten nicht spezifiziert ist und deshalb von verschiedenen Implementierungen von Compilern willkürlich behandelt wird. Dies ist eine Eigenschaft einiger Programmiersprachen, wie beispielsweise C oder C++. Die Semantik bestimmter Operationen ist in den Standards dieser Sprachen nicht definiert, wodurch eine Implementierung davon ausgehen kann, dass diese Operationen im Normalfall nicht vorkommen. Dadurch stimmt das Verhalten der Implementierung in jedem Fall mit den Standards der Sprache überein. Es ist die Aufgabe des Programmierers, nie Code zu schreiben, der undefiniertes Verhalten auslöst, Compiler-Implementationen dürfen in diesem Fall aber Diagnosen ausstellen.
  • Un comportamiento indefinido (undefined behavior en inglés) en programación se refiere a la operación cuyo comportamiento es arbitrario. En los lenguajes de programación en los que se han definido comportamientos indefinidos las implementaciones pueden asumir que las operaciones que provocan un comportamiento indefinido nunca ocurren. Esta suposición hace válidas varias transformaciones del programa o simplifica las pruebas de validez dándole flexibilidad a la implementación del lenguaje. Es responsabilidad del programador escribir código que nunca invoque comportamientos indefinidos, pero la implementación del lenguaje tiene permitido mostrar mensajes de diagnóstico cuando esto suceda.
  • Na ciência da computação, comportamento indefinido é um recurso existente em algumas linguagens de programação, notoriamente na linguagem C. Para simplificar a especificação e permitir maior flexibilidade de implementação, as especificações determinam que o resultado de algumas operações é indefinido. Operações que não sejam explicitamente definidas por um padrão também são associadas a comportamento indefinido.
  • Неопределённое поведение (англ. undefined behaviour, в ряде источников непредсказуемое поведение) — свойство некоторых языков программирования (наиболее заметно в Си), программных библиотек и аппаратного обеспечения в определённых маргинальных ситуациях выдавать результат, зависящий от реализации компилятора (библиотеки, микросхемы) и случайных факторов наподобие состояния памяти или сработавшего прерывания. Другими словами, спецификация не определяет поведение языка (библиотеки, микросхемы) в любых возможных ситуациях, а говорит: «при условии А результат операции Б не определён». Допускать такую ситуацию в программе считается ошибкой; даже если на некотором компиляторе программа успешно выполняется, она не будет кроссплатформенной и может отказать на другой машине, в другой ОС или при дру
  • 在计算机程序设计中,未定义行为(英语:undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。 例如,在C语言中,在任何自动对象被初始化之前,通过非字符类型的左值表达式读取这个变量存储的值会产生未定义行为,除以零或访问数组定义的界限之外的元素(参见缓冲区溢出)也会产生未定义行为。在一般情况下,之后的任何行为是不确定的;甚至只要程序的执行存在未定义行为,在引起未定义行为操作发生之前也可能不要求保证程序的行为可预测(如ISO C++)。特别地,标准从来没有要求编译器判断未定义行为,因此,如果程序调用未定义行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的实例发生时,正如语言标准所说,“什么事情都可能发生”,也许什么都没有发生。
differentFrom
sameAs
dct:subject
Wikipage page ID
Wikipage revision ID
Link from a Wikipage to another Wikipage
Link from a Wikipage to an external page
foaf:isPrimaryTopicOf
prov:wasDerivedFrom
has abstract
  • In computer programming, undefined behavior (UB) is the result of executing computer code that does not have a prescribed behavior by the language specification the code adheres to, for the current state of the program (e.g. memory). This happens when the translator of the source code makes certain assumptions, but these assumptions are not satisfied during execution. The behavior of some programming languages - most famously C and C++ - is undefined in some cases. In the standards for these languages, the semantics of certain operations is undefined. An implementation is allowed to assume that such operations never occur in standard-conforming program code; the implementation will be considered correct whatever it does in such cases, analogous to don't-care terms in digital logic. This assumption can make various program transformations valid or simplify their proof of correctness, giving flexibility to the implementation. As a result, the compiler can often make more optimizations. It is the responsibility of the programmer to write code that never invokes undefined behavior, although compiler implementations are allowed to issue diagnostics when this happens. Undefined behavior is often unpredictable and a frequent cause of software bugs. In the C community, undefined behavior may be humorously referred to as "nasal demons", after a comp.std.c post that explained undefined behavior as allowing the compiler to do anything it chooses, even "to make demons fly out of your nose". Under some circumstances there can be specific restrictions on undefined behavior. For example, the instruction set specifications of a CPU might leave the behavior of some forms of an instruction undefined, but if the CPU supports memory protection then the specification will probably include a blanket rule stating that no user-accessible instruction may cause a hole in the operating system's security; so an actual CPU would be permitted to corrupt user registers in response to such an instruction, but would not be allowed to, for example, switch into supervisor mode.
  • Un comportamiento indefinido (undefined behavior en inglés) en programación se refiere a la operación cuyo comportamiento es arbitrario. En los lenguajes de programación en los que se han definido comportamientos indefinidos las implementaciones pueden asumir que las operaciones que provocan un comportamiento indefinido nunca ocurren. Esta suposición hace válidas varias transformaciones del programa o simplifica las pruebas de validez dándole flexibilidad a la implementación del lenguaje. Es responsabilidad del programador escribir código que nunca invoque comportamientos indefinidos, pero la implementación del lenguaje tiene permitido mostrar mensajes de diagnóstico cuando esto suceda. La existencia de comportamientos indefinidos le permite al lenguaje omitir algunas comprobaciones como (en el caso de C) que el divisor no sea 0 o que el resultado de una suma de enteros sin signo no sea mayor al máximo valor admitido por ese tipo de enteros sin signo. Esto ahorra algunos ciclos del procesador cada vez que esas operaciones son invocadas y asigna la responsabilidad de hacer esas comprobaciones cuando sean relevantes al programador. Los efectos de la invocación de una operación que provoque un comportamiento indefinido pueden variar dependiendo de la arquitectura del procesador en la que se ejecute el programa, el cambio en cualquiera de los elementos de la cadena de herramientas (como el compilador), el sistema operativo, el contenido de la memoria, el momento de ejecución, etc. Entre los posibles efectos de la invocación de un comportamiento indefinido está la ejecución esperada del programa (lo que oculta el problema), el cierre inesperado del programa, corrupción de la memoria, resultados incorrectos, fallo irrecuperable del sistema informático, vulnerabilidades de seguridad, etc. Los comportamientos indefinidos no deben ser confundidos con los los comportamientos no especificados o los comportamientos definidos por la implementación.
  • Undefiniertes Verhalten beschreibt in der Informatik Code, dessen Verhalten nicht spezifiziert ist und deshalb von verschiedenen Implementierungen von Compilern willkürlich behandelt wird. Dies ist eine Eigenschaft einiger Programmiersprachen, wie beispielsweise C oder C++. Die Semantik bestimmter Operationen ist in den Standards dieser Sprachen nicht definiert, wodurch eine Implementierung davon ausgehen kann, dass diese Operationen im Normalfall nicht vorkommen. Dadurch stimmt das Verhalten der Implementierung in jedem Fall mit den Standards der Sprache überein. Es ist die Aufgabe des Programmierers, nie Code zu schreiben, der undefiniertes Verhalten auslöst, Compiler-Implementationen dürfen in diesem Fall aber Diagnosen ausstellen. In C führt beispielsweise die Division durch Null zu undefiniertem Verhalten.
  • Na ciência da computação, comportamento indefinido é um recurso existente em algumas linguagens de programação, notoriamente na linguagem C. Para simplificar a especificação e permitir maior flexibilidade de implementação, as especificações determinam que o resultado de algumas operações é indefinido. Operações que não sejam explicitamente definidas por um padrão também são associadas a comportamento indefinido. Por exemplo, em C, o uso de qualquer variável antes que seu valor tenha sido inicializado leva a comportamento indefinido, assim como dividir um número por zero e indexar um vetor em índices que excedem seus limites (transbordamento de dados). Ao se deparar com qualquer uma dessas situações, o compilador é livre para qualquer ação, que pode ser a mais simples, a mais eficiente ou qualquer outra coisa. É importante salientar que absolutamente qualquer ação tomada pelo compilador diante de uma situação de comportamento indefinido é válida, incluindo gerar mensagens de advertência ou silenciosamente ignorar a situação. Isso pode fazer com que programas aparentemente corretos, os quais compilam e rodam normalmente em uma determinada plataforma, deixem de compilar, sofram falhas de execução ou se comportem de maneira imprevisível em outras.
  • Неопределённое поведение (англ. undefined behaviour, в ряде источников непредсказуемое поведение) — свойство некоторых языков программирования (наиболее заметно в Си), программных библиотек и аппаратного обеспечения в определённых маргинальных ситуациях выдавать результат, зависящий от реализации компилятора (библиотеки, микросхемы) и случайных факторов наподобие состояния памяти или сработавшего прерывания. Другими словами, спецификация не определяет поведение языка (библиотеки, микросхемы) в любых возможных ситуациях, а говорит: «при условии А результат операции Б не определён». Допускать такую ситуацию в программе считается ошибкой; даже если на некотором компиляторе программа успешно выполняется, она не будет кроссплатформенной и может отказать на другой машине, в другой ОС или при других настройках компилятора. Неопределенное поведение не следует путать с неуточняемым поведением (unspecified behavior), при котором спецификация разрешает не любое поведение, а только ограниченный диапазон вариантов реализации.
  • 在计算机程序设计中,未定义行为(英语:undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。 例如,在C语言中,在任何自动对象被初始化之前,通过非字符类型的左值表达式读取这个变量存储的值会产生未定义行为,除以零或访问数组定义的界限之外的元素(参见缓冲区溢出)也会产生未定义行为。在一般情况下,之后的任何行为是不确定的;甚至只要程序的执行存在未定义行为,在引起未定义行为操作发生之前也可能不要求保证程序的行为可预测(如ISO C++)。特别地,标准从来没有要求编译器判断未定义行为,因此,如果程序调用未定义行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的实例发生时,正如语言标准所说,“什么事情都可能发生”,也许什么都没有发生。 和未指定行为(unspecified behavior)不同,未定义行为强调基于不可移植或错误的程序构造,或使用错误的数据。一个符合标准的实现可以在假定未定义行为永远不发生(除了显式使用不严格遵守标准的扩展)的基础上进行优化,可能导致原本存在未定义行为(例如有符号数溢出)的程序经过优化后显示出更加明显的错误(例如死循环)。因此,这种未定义行为一般应被视为bug。
http://purl.org/voc/vrank#hasRank
http://purl.org/li...ics/gold/hypernym
is differentFrom of
is Link from a Wikipage to another Wikipage of
Faceted Search & Find service v1.17_git21 as of Mar 09 2019


Alternative Linked Data Documents: PivotViewer | iSPARQL | ODE     Content Formats:       RDF       ODATA       Microdata      About   
This material is Open Knowledge   W3C Semantic Web Technology [RDF Data] Valid XHTML + RDFa
OpenLink Virtuoso version 07.20.3230 as of Dec 18 2018, on Linux (x86_64-generic-linux-glibc25), Single-Server Edition (61 GB total memory)
Data on this page belongs to its respective rights holders.
Virtuoso Faceted Browser Copyright © 2009-2019 OpenLink Software