An Entity of Type: Abstraction100002137, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

In computer programming, bounds checking is any method of detecting whether a variable is within some bounds before it is used. It is usually used to ensure that a number fits into a given type (range checking), or that a variable being used as an array index is within the bounds of the array (index checking). A failed bounds check usually results in the generation of some sort of exception signal.

Property Value
dbo:abstract
  • In computer programming, bounds checking is any method of detecting whether a variable is within some bounds before it is used. It is usually used to ensure that a number fits into a given type (range checking), or that a variable being used as an array index is within the bounds of the array (index checking). A failed bounds check usually results in the generation of some sort of exception signal. Because performing bounds checking during every usage is time-consuming, it is not always done. Bounds-checking elimination is a compiler optimization technique that eliminates unneeded bounds checking. (en)
  • 경계 검사(bounds checking)는 변수가 사용되기 전에 어떤 경계 내에 위치하는지를 검사하는 기법으로, 주로 숫자 데이터가 특정 범위 내에 존재하는지 여부나 (범위 검사), 배열 가 배열의 경계 안에 있는지 여부를 검사하는데 사용된다 (인덱스 검사). 경계 검사에서 실패한 경우 (가령, 접근할 배열 인덱스가 배열 경계 바깥에 있는 경우)는 보통 프로그램 예외로 처리된다. 경계 검사는 주로 컴퓨터 보안과 관련하여 메모리 취약점 발생을 근본적으로 방지하는 목적으로 사용되지만, 성능 측면에서 상당한 오버헤드를 발생시켜 통상 모든 경우에 항상 수행되지는 않는다. 이와 관련한 컴파일러 최적화 기법 가운데 하나는 불필요한 경계 검사 코드를 제거하는 것을 목표로 하기도 한다. (Bound-checking elimination) (ko)
  • Nella programmazione, il controllo dei limiti (bounds checking) è un qualsiasi metodo per scoprire se una variabile è all'interno dei suoi limiti prima di essere utilizzata. È particolarmente importante per una variabile usata come indice per una matrice/vettore assicurarsi che il suo valore non sia al di fuori dei suoi limiti. Per esempio, se in un vettore di dieci elementi, numerati da 1 a 10, il programma cerca di leggere o scrivere l'elemento numero 11 e nulla gli impedisce di farlo, verranno lette/scritte le locazioni di memoria immediatamente successive a quella del decimo elemento, senza riguardo a ciò che esse possano contenere, questo porta inevitabilmente il programma a produrre risultati errati o a bloccarsi per avere generato indirizzi non validi (protezione di memoria). Un secondo esempio è quello di una variabile scalare numerica intera con segno rappresentata su 16 bits, essa può assumere valori compresi fra −32768 e +32767: un suo valore che eccedesse questi limiti, provocherebbe malfunzionamenti, risultati errati ed eventuale blocco del programma. Nel primo caso si parla di "index checking", nel secondo di "range checking". Se il programma è dotato del "controllo dei limiti" cioè contiene istruzioni apposite di controllo che vengono eseguite ogni qualvolta vengono toccate le variabili, viene generata una qualche "segnalazione di eccezione" (exception signal) Poiché il controllo dei limiti a run-time è ritenuto pesante, non viene quasi mai effettuato. Alcuni compilatori includono switch di compilazione per attivare o disattivare il controllo limiti (e anche altri controlli come overflow e underflow) Nella sua lezione del 1980 al "Turing Award" C. Antony R. Hoare descrisse la sua esperienza nella progettazione dell', un linguaggio che includeva il controllo dei limiti, dicendo: Una conseguenza di questo principio è che ogni occorrenza di ogni indice in ogni variabile indicizzata viene controllato ad ogni modifica rispetto ai limiti dichiarati, superiore ed inferiore. Molti anni dopo chiedemmo ai nostri clienti se volevano l'opzione di disattivare questi controlli nell'interesse dell'efficienza in esecuzione. Unanimemente essi ci chiesero di non farlo, conoscevano la frequenza di questi errori di indicizzazione e sapevano che il non identificarli avrebbe portato a risultati disastrosi. Noto con paura ed orrore che ancora nel 1980, progettisti ed utilizzatori di linguaggi di programmazione non hanno imparato questa lezione. In un qualsiasi ramo rispettabile dell'ingegneria la mancanza di tali elementari precauzioni sarebbe da tempo contro la legge. Tra i linguaggi che includono obbligatoriamente il controllo a run-time vi sono Ada, Visual Basic, Java, JavaScript, PHP, Python, Ruby, Haskell, Lisp e C#. I linguaggi D e OCaml possono attivare o disattivare i controlli tramite switch di compilazione. Il C# supporta anche le "unsafe regions": sezioni di codice che, fra l'altro, sospendono temporaneamente i controlli nell'interesse dell'efficienza. Questo è utile per accelerare l'esecuzione in porzioni di programma critiche, senza sacrificare la affidabilità dell'intero programma. (it)
  • Sprawdzanie zakresu (ang. bounds checking) – każda metoda wykrywania czy nowa wartość zmiennej mieści się w zakresie zmiennej przed zapisem do niej, lub czy wartość która zostanie zaraz użyta jako indeks do tablicy jest w granicach tej tablicy. Na przykład wartość 32768 która miałaby być przypisana do 16-bitowej zmiennej ze znakiem (której zakres to -32768 do +32767), lub dostęp do 25 elementu tablicy w której zasięg prawidłowych indeksów to 0 do 9. Pierwszy przypadek to , a drugi to . Negatywne sprawdzenie zakresu zwykle powoduje wywołanie różnego rodzaju wyjątku. Ponieważ sprawdzanie zakresu przy każdym odwołaniu się do zmiennej lub tablicy jest czasochłonne, w niektórych aplikacjach nie przeprowadza się tego sprawdzenia. Istnieją też specjalne techniki kompilacji umożliwiające eliminację sprawdzeń zakresu w wielu częstych przypadkach; zobacz eliminacja sprawdzania zakresu. Wiele języków programowania, takich jak C/C++, nigdy nie przeprowadza automatycznego sprawdzania zakresu, co jest umotywowane kwestią szybkości działania programu. Jest to przyczyną bardzo wielu błędów off by one i przepełnienia bufora. Popularne języki wymagające sprawdzania zakresu podczas działania programu to Ada, Visual Basic, Java i C#. W języku D i wielu innych sprawdzanie zależy od przełącznika kompilatora. C# pozwala na fragmenty kodu oznaczone unsafe, w których można między innymi pominąć sprawdzanie zakresu i umożliwić używanie surowych wskaźników do pamięci dla szybszego wykonania kodu. Jest to przydatne do optymalizacji niewielkich, a często wywoływanych fragmentów, bez obniżania bezpieczeństwa wykonania całego programu. (pl)
  • 边界检查在程序设计中是指在使用某一个变量前,检查该变量是否处在一个特定范围之内。最常见的是数组的下标检查,防止下标超出数组范围而覆盖、運行其他堆疊位址数据。 若是边界检查未能有效发现错误,最常见的结果是程序出现异常并终止运行,但也可能出现其他现象。 由于每次都进行边界检查非常耗时,而且有些代码确定不会出现越界问题,所以这个操作并不总是需要被执行。一些现代编译器中有称为选择性边界检查的技术,可以略去一些常见的不需要的边界检查,从而提高程序的性能。 (zh)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 486833 (xsd:integer)
dbo:wikiPageLength
  • 10570 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1105314615 (xsd:integer)
dbo:wikiPageWikiLink
dbp:date
  • 2017-10-02 (xsd:date)
dbp:url
dbp:wikiPageUsesTemplate
dcterms:subject
rdf:type
rdfs:comment
  • 경계 검사(bounds checking)는 변수가 사용되기 전에 어떤 경계 내에 위치하는지를 검사하는 기법으로, 주로 숫자 데이터가 특정 범위 내에 존재하는지 여부나 (범위 검사), 배열 가 배열의 경계 안에 있는지 여부를 검사하는데 사용된다 (인덱스 검사). 경계 검사에서 실패한 경우 (가령, 접근할 배열 인덱스가 배열 경계 바깥에 있는 경우)는 보통 프로그램 예외로 처리된다. 경계 검사는 주로 컴퓨터 보안과 관련하여 메모리 취약점 발생을 근본적으로 방지하는 목적으로 사용되지만, 성능 측면에서 상당한 오버헤드를 발생시켜 통상 모든 경우에 항상 수행되지는 않는다. 이와 관련한 컴파일러 최적화 기법 가운데 하나는 불필요한 경계 검사 코드를 제거하는 것을 목표로 하기도 한다. (Bound-checking elimination) (ko)
  • 边界检查在程序设计中是指在使用某一个变量前,检查该变量是否处在一个特定范围之内。最常见的是数组的下标检查,防止下标超出数组范围而覆盖、運行其他堆疊位址数据。 若是边界检查未能有效发现错误,最常见的结果是程序出现异常并终止运行,但也可能出现其他现象。 由于每次都进行边界检查非常耗时,而且有些代码确定不会出现越界问题,所以这个操作并不总是需要被执行。一些现代编译器中有称为选择性边界检查的技术,可以略去一些常见的不需要的边界检查,从而提高程序的性能。 (zh)
  • In computer programming, bounds checking is any method of detecting whether a variable is within some bounds before it is used. It is usually used to ensure that a number fits into a given type (range checking), or that a variable being used as an array index is within the bounds of the array (index checking). A failed bounds check usually results in the generation of some sort of exception signal. (en)
  • Nella programmazione, il controllo dei limiti (bounds checking) è un qualsiasi metodo per scoprire se una variabile è all'interno dei suoi limiti prima di essere utilizzata. È particolarmente importante per una variabile usata come indice per una matrice/vettore assicurarsi che il suo valore non sia al di fuori dei suoi limiti. Nel primo caso si parla di "index checking", nel secondo di "range checking". Poiché il controllo dei limiti a run-time è ritenuto pesante, non viene quasi mai effettuato. (it)
  • Sprawdzanie zakresu (ang. bounds checking) – każda metoda wykrywania czy nowa wartość zmiennej mieści się w zakresie zmiennej przed zapisem do niej, lub czy wartość która zostanie zaraz użyta jako indeks do tablicy jest w granicach tej tablicy. Na przykład wartość 32768 która miałaby być przypisana do 16-bitowej zmiennej ze znakiem (której zakres to -32768 do +32767), lub dostęp do 25 elementu tablicy w której zasięg prawidłowych indeksów to 0 do 9. Pierwszy przypadek to , a drugi to . Negatywne sprawdzenie zakresu zwykle powoduje wywołanie różnego rodzaju wyjątku. (pl)
rdfs:label
  • Bounds checking (en)
  • Controllo dei limiti (it)
  • 경계 검사 (ko)
  • Sprawdzanie zakresu (pl)
  • 边界检查 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License