오래된 포인터 버그
Stale pointer bug이 글은 검증을 위해 추가 인용문이 필요합니다.: bug – · · · (2014년 9월 ( 템플릿메시지 및 ) |
오래된 포인터 버그는 에일리어싱 버그로 알려져 있으며, 특히 malloc 함수 또는 동등한 함수를 통해 동적 메모리 할당을 수행하는 코드에서 발생할 수 있는 미묘한 프로그래밍 오류의 클래스입니다.
여러 포인터가 특정 스토리지 청크에서 주소(에일리어스)를 지정하면 스토리지가 하나의 에일리어스를 통해 해방되거나 재할당(그리고 이동)된 다음 다른 에일리어스를 통해 참조될 수 있습니다.이 경우 malloc arena의 상태 및 할당 이력에 따라 미묘한(그리고 간헐적인) 오류가 발생할 수 있습니다.이 버그는 할당된 메모리에 대한 에일리어스를 작성하지 않거나 스토리지에 대한 참조의 동적 범위를 제어하여 스토리지에 대한 참조가 해방될 때 남아 있지 않도록 하거나 가비지 컬렉터를 사용하여 인텔리전트 메모리 할당 라이브러리의 형태로 또는 Lisp와 같은 고급 언어에 의해 제공되는 것으로 방지할 수 있습니다.
"에일리어싱 버그"라는 용어는 오늘날 C 프로그래밍과 관련되어 있지만, 1960년대에 이미 ALGOL 60 및 Fortran 프로그래밍 언어 커뮤니티에서 매우 유사한 의미로 사용되고 있었다.
「 」를 참조해 주세요.