Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special cases of memory safety violations. More generally, dangling references and wild references are references that do not resolve to a valid destination, and include such phenomena as link rot on the internet.

Property Value
dbo:abstract
  • Ein hängender Zeiger (englisch dangling pointer) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten dynamischen Speicherbereich (auch Heap genannt) verweist. Hängende Zeiger kommen oft dadurch zustande, dass sie nicht initialisiert wurden (in dem Fall alternativ wilde Zeiger genannt) – aber auch dadurch, dass sie auf einen Speicherbereich verweisen, der bereits freigegeben wurde. Hängende Zeiger können für den Programmlauf unvorhersehbare Auswirkungen haben und das Programm zum Absturz bringen. Während Userspace-Programme in der Regel bei einer Dereferenzierung eines Zeigers, der auf einen ungültigen Speicherbereich zeigt, beendet werden, kann ein solcher im Kernel bzw. dessen Modulen schlimmstenfalls das gesamte System beschädigen, ohne dass der Benutzer etwas bemerkt, bevor es zu spät ist, da keine Kontrollinstanz vorhanden ist, die z. B. das Überschreiben von fremdem Code verhindern könnte. Daher ist bei der Kernel- und Treiber-Entwicklung besonders auf die korrekte Verwendung zu achten. Die Unvorhersehbarkeit rührt daher, dass ein Zugriff auf einen bereits freigegebenen Speicherbereich nicht zwangsläufig sofort einen Laufzeitfehler (Schutzverletzung) auslöst, da zwischen der Speicherfreigabe durch den Programmierer und der tatsächlichen Freigabe durch das Laufzeitsystem noch eine gewisse Zeit vergehen kann; ggf. ist der Speicherbereich inzwischen auch neu vergeben und ist dem Prozess tatsächlich wieder zugeteilt, aber in anderem semantischem Kontext. Findet auf (noch) erreichbaren (freigegebenen) Speicher ein Zugriff statt (Zeilen (*) im Beispiel), so löst er keinen Fehler aus. Da dies aber nicht reproduzierbar ist, sind diese sporadischen Fehler besonders schwer zu entdecken. (de)
  • Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special cases of memory safety violations. More generally, dangling references and wild references are references that do not resolve to a valid destination, and include such phenomena as link rot on the internet. Dangling pointers arise during object destruction, when an object that has an incoming reference is deleted or deallocated, without modifying the value of the pointer, so that the pointer still points to the memory location of the deallocated memory. The system may reallocate the previously freed memory, and if the program then dereferences the (now) dangling pointer, unpredictable behavior may result, as the memory may now contain completely different data. If the program writes to memory referenced by a dangling pointer, a silent corruption of unrelated data may result, leading to subtle bugs that can be extremely difficult to find. If the memory has been reallocated to another process, then attempting to dereference the dangling pointer can cause segmentation faults (UNIX, Linux) or general protection faults (Windows). If the program has sufficient privileges to allow it to overwrite the bookkeeping data used by the kernel's memory allocator, the corruption can cause system instabilities. In object-oriented languages with garbage collection, dangling references are prevented by only destroying objects that are unreachable, meaning they do not have any incoming pointers; this is ensured either by tracing or reference counting. However, a finalizer may create new references to an object, requiring object resurrection to prevent a dangling reference. Wild pointers arise when a pointer is used prior to initialization to some known state, which is possible in some programming languages. They show the same erratic behavior as dangling pointers, though they are less likely to stay undetected because many compilers will raise a warning at compile time if declared variables are accessed before being initialized. (en)
  • En programación, si una estructura en el heap (lugar de donde se asigna memoria) es destruida antes de que todas las referencias (los apuntadores) a la misma sean destruidas, cualquier referencia restante se llama referencia colgante (Dangling Reference). Lenguajes como C detectan en tiempo de ejecución estas referencias y anuncian un error. Existen métodos para detectar estas referencias implementando un o un en los lenguajes de programación que usan recolectores de basura. (es)
  • Dangling pointer (traduction littérale : « pointeur pendouillant » ou « pointeur sautillant ») est un terme anglais de programmation informatique désignant un pointeur qui ne pointe pas vers un type d'objet approprié. Les Dangling pointers sont créés lors de la destruction de l'objet. (fr)
  • 허상 포인터(Dangling pointer) 그리고 와일드 포인터(wild pointers)는 컴퓨터 프로그래밍에서 적절한 타입의 유효한 객체를 가리키고 있지 않는 포인터를 말한다. 이것들은 메모리 보안 위반의 특별한 경우들이다. 일반적으로 허상 포인터는 인터넷의 죽은 링크 (link rot) 형상들처럼 유효하지 않은 목적지 주소에 대한 참조이다. 허상 포인터는 객체 파괴시에 발생하는데, 즉 객체에 대한 참조가 포인터 값에 대한 수정 없이 삭제되거나 할당 해제돼서 포인터가 계속 할당 해제된 메모리를 가리킬 때이다. 시스템은 할당 해제된 메모리를 다른 프로세스에게 재할당하겠지만, 기존 프로그램이 허상 포인터를 하면 메모리는 현재 전혀 다른 데이터를 갖고 있을 것이므로 예측할 수 없는 행동이 발생한다. 특히 프로그램이 허상 포인터가 가리키는 메모리에 쓰기를 하면, 관련되지 않은 데이터의 조용한 오염이 발생하게 되고, 이것은 찾기가 매우 힘들어진다. 참고로 리눅스, 유닉스의 경우에는 세그멘테이션 오류가, 윈도우의 경우에는 (general protection fault)가 발생한다. 만약 이 겹쳐써진 데이터가 시스템의 메모리 할당자가 사용하는 북키핑 데이터라면, 이 오염은 시스템을 불안정하게 만들 수 있다. 객체 지향 프로그래밍의 경우 쓰레기 수집으로 허상 참조들은 참조되지 않는 객체를 파괴함으로써 예방된다. 이것은 추적이나 참조 횟수 계산 방식에 의해 보증된다. 그러나 파이널라이저(finalizer)는 허상 잠조를 예방하기 위하여 객체 재생을 요구하면서, 객체에 대한 새로운 참조를 생성할 수 있다. 와일드 포인터들은 포인터가 알려진 상태로 초기화되기 전에 사용될 때 발생한다. 이것들은 허상 포인터와 같은 오류적인 행동들을 보이지만, 탐지되기가 쉽다는 차이점이 있다. (ko)
  • Apontador (ou ponteiro) pendente, solto ou selvagem é um ponteiro que não aponta para um objeto/endereço de memória válido. (pt)
  • Висячий указатель или висячая ссылка (англ. Dangling pointer, wild pointer, dangling reference) — указатель, не указывающий на допустимый объект соответствующего типа. Это особый случай нарушения безопасности памяти. Висячие указатели возникают тогда, когда объект удалён или перемещён без изменения значения указателя на нулевое, так что указатель все ещё указывает на область памяти, где ранее хранились данные. Поскольку система может перераспределить ранее освобождённую память (в том числе в другой процесс), то оборванный указатель может привести к непредсказуемому поведению программы. В случае, когда программа записывает данные в память, используя такой указатель, данные могут незаметно разрушаться, что приводит к тонким ошибкам, которые очень трудно найти. Этот вид ошибок очень опасен, и наряду с утечками памяти случается довольно часто. Ряд языков снижают вероятность появления висячих указателей, в частности, используя автоматическую сборку мусора или иными методами, повышая безопасность доступа к памяти. (ru)
  • 在计算机编程领域中,迷途指针,或称悬空指针、野指针,指的是不指向任何合法的对象的指针。 当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称迷途指针。若操作系统将这部分已经释放的内存重新分配给另外一个进程,而原来的程序重新引用现在的迷途指针,则将产生无法预料的后果。因为此时迷途指针所指向的内存现在包含的已经完全是不同的数据。通常来说,若原来的程序继续往迷途指针所指向的内存地址写入数据,这些和原来程序不相关的数据将被损坏,进而导致不可预料的程序错误。这种类型的程序错误,不容易找到问题的原因,通常会导致記憶體區段錯誤(Linux系统中)和一般保护错误(Windows系统中)。如果操作系统的内存分配器将已经被覆盖的数据区域再分配,就可能会影响系统的稳定性。 某些编程语言允许未初始化的指针的存在,而这类指针即为野指针。野指针所导致的错误和迷途指针非常相似,但野指针的问题更容易被发现。 (zh)
  • Завислі вказівники, дикі вказівники (англ. dangling pointers, wild pointers) у програмуванні — вказівники, що не вказують на допустимий об'єкт відповідного типу. Це спеціальні випадки порушення безпеки пам'яті. Завислі вказівники виникають тоді, коли об'єкт видалено або переміщено без зміни значення вказівника на нульове, так що вказівник все ще вказує на область пам'яті непереміщених даних. Оскільки система може перерозподілити раніше звільнену пам'ять (у тому числі в інший процес), то обірваний вказівник може призвести до непередбачуваної поведінки програми. У випадку, коли програма записує дані у пам'ять, використовуючи такий вказівник, дані можуть непомітно руйнуватися, що призводить до тонких помилок, які надзвичайно важко знайти. Дикі вказівники виникають, коли вказівник використовується до ініціалізації у відомий стан, що можливо в деяких мовах програмування. Вони такі ж непередбачувані як висячі, проте вони мають менше шансів залишитися непоміченими. Цей вид помилок є дуже небезпечним і поруч з витоками пам'яті трапляється досить часто. Ряд мов програмування знижують вірогідність появи висячих вказівників, використовуючи автоматичне збирання сміття та інші методи, цим самим підвищуючи безпеку доступу до пам'яті. (uk)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 1119856 (xsd:integer)
dbo:wikiPageLength
  • 16027 (xsd:integer)
dbo:wikiPageRevisionID
  • 983982612 (xsd:integer)
dbo:wikiPageWikiLink
dbp:date
  • June 2014 (en)
dbp:reason
  • incomprehensible snippet from a paper (en)
dbp:wikiPageUsesTemplate
dct:subject
rdf:type
rdfs:comment
  • En programación, si una estructura en el heap (lugar de donde se asigna memoria) es destruida antes de que todas las referencias (los apuntadores) a la misma sean destruidas, cualquier referencia restante se llama referencia colgante (Dangling Reference). Lenguajes como C detectan en tiempo de ejecución estas referencias y anuncian un error. Existen métodos para detectar estas referencias implementando un o un en los lenguajes de programación que usan recolectores de basura. (es)
  • Dangling pointer (traduction littérale : « pointeur pendouillant » ou « pointeur sautillant ») est un terme anglais de programmation informatique désignant un pointeur qui ne pointe pas vers un type d'objet approprié. Les Dangling pointers sont créés lors de la destruction de l'objet. (fr)
  • Apontador (ou ponteiro) pendente, solto ou selvagem é um ponteiro que não aponta para um objeto/endereço de memória válido. (pt)
  • 在计算机编程领域中,迷途指针,或称悬空指针、野指针,指的是不指向任何合法的对象的指针。 当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称迷途指针。若操作系统将这部分已经释放的内存重新分配给另外一个进程,而原来的程序重新引用现在的迷途指针,则将产生无法预料的后果。因为此时迷途指针所指向的内存现在包含的已经完全是不同的数据。通常来说,若原来的程序继续往迷途指针所指向的内存地址写入数据,这些和原来程序不相关的数据将被损坏,进而导致不可预料的程序错误。这种类型的程序错误,不容易找到问题的原因,通常会导致記憶體區段錯誤(Linux系统中)和一般保护错误(Windows系统中)。如果操作系统的内存分配器将已经被覆盖的数据区域再分配,就可能会影响系统的稳定性。 某些编程语言允许未初始化的指针的存在,而这类指针即为野指针。野指针所导致的错误和迷途指针非常相似,但野指针的问题更容易被发现。 (zh)
  • Ein hängender Zeiger (englisch dangling pointer) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten dynamischen Speicherbereich (auch Heap genannt) verweist. Hängende Zeiger kommen oft dadurch zustande, dass sie nicht initialisiert wurden (in dem Fall alternativ wilde Zeiger genannt) – aber auch dadurch, dass sie auf einen Speicherbereich verweisen, der bereits freigegeben wurde. Hängende Zeiger können für den Programmlauf unvorhersehbare Auswirkungen haben und das Programm zum Absturz bringen. (de)
  • Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special cases of memory safety violations. More generally, dangling references and wild references are references that do not resolve to a valid destination, and include such phenomena as link rot on the internet. (en)
  • 허상 포인터(Dangling pointer) 그리고 와일드 포인터(wild pointers)는 컴퓨터 프로그래밍에서 적절한 타입의 유효한 객체를 가리키고 있지 않는 포인터를 말한다. 이것들은 메모리 보안 위반의 특별한 경우들이다. 일반적으로 허상 포인터는 인터넷의 죽은 링크 (link rot) 형상들처럼 유효하지 않은 목적지 주소에 대한 참조이다. 허상 포인터는 객체 파괴시에 발생하는데, 즉 객체에 대한 참조가 포인터 값에 대한 수정 없이 삭제되거나 할당 해제돼서 포인터가 계속 할당 해제된 메모리를 가리킬 때이다. 시스템은 할당 해제된 메모리를 다른 프로세스에게 재할당하겠지만, 기존 프로그램이 허상 포인터를 하면 메모리는 현재 전혀 다른 데이터를 갖고 있을 것이므로 예측할 수 없는 행동이 발생한다. 특히 프로그램이 허상 포인터가 가리키는 메모리에 쓰기를 하면, 관련되지 않은 데이터의 조용한 오염이 발생하게 되고, 이것은 찾기가 매우 힘들어진다. 참고로 리눅스, 유닉스의 경우에는 세그멘테이션 오류가, 윈도우의 경우에는 (general protection fault)가 발생한다. 만약 이 겹쳐써진 데이터가 시스템의 메모리 할당자가 사용하는 북키핑 데이터라면, 이 오염은 시스템을 불안정하게 만들 수 있다. 객체 지향 프로그래밍의 경우 쓰레기 수집으로 허상 참조들은 참조되지 않는 객체를 파괴함으로써 예방된다. 이것은 추적이나 참조 횟수 계산 방식에 의해 보증된다. 그러나 파이널라이저(finalizer)는 허상 잠조를 예방하기 위하여 객체 재생을 요구하면서, 객체에 대한 새로운 참조를 생성할 수 있다. (ko)
  • Висячий указатель или висячая ссылка (англ. Dangling pointer, wild pointer, dangling reference) — указатель, не указывающий на допустимый объект соответствующего типа. Это особый случай нарушения безопасности памяти. Этот вид ошибок очень опасен, и наряду с утечками памяти случается довольно часто. Ряд языков снижают вероятность появления висячих указателей, в частности, используя автоматическую сборку мусора или иными методами, повышая безопасность доступа к памяти. (ru)
  • Завислі вказівники, дикі вказівники (англ. dangling pointers, wild pointers) у програмуванні — вказівники, що не вказують на допустимий об'єкт відповідного типу. Це спеціальні випадки порушення безпеки пам'яті. Дикі вказівники виникають, коли вказівник використовується до ініціалізації у відомий стан, що можливо в деяких мовах програмування. Вони такі ж непередбачувані як висячі, проте вони мають менше шансів залишитися непоміченими. Цей вид помилок є дуже небезпечним і поруч з витоками пам'яті трапляється досить часто. (uk)
rdfs:label
  • Hängender Zeiger (de)
  • Dangling pointer (en)
  • Referencia colgante (es)
  • Dangling pointer (fr)
  • 허상 포인터 (ko)
  • Apontador pendente (pt)
  • Висячий указатель (ru)
  • Висячі вказівники (uk)
  • 迷途指针 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of