Skip to main content

스택 오버플로 란 무엇입니까?

stack 스택 오버 플로우는 블록에 공간이 남아 있지 않기 때문에 특정 메모리 블록에 데이터를 작성하려는 시도가 실패하는 프로그래밍 오류입니다.이 유형의 오류는 버퍼 오버플로, 힙 오버플로 및 스택 버퍼 오버 플로우와 같은 방식으로 발생합니다.이러한 유형의 오류의 차이점은 사용중인 컴퓨터 데이터 구조에 따라 다르며 일반적인 특징은 사용 가능한 공간보다 더 많은 데이터를 작성하려는 시도가 발생한다는 것입니다. 스택 오버플로의 증상은사용 된 컴퓨터 언어 및 오류보고 기계 사용 가능.C ++에서 스택 오버 플로우는 종종 분할 결함으로 나타나며, 종종 오버플로가 어디에서 또는 어떻게 발생했는지 결정하기위한 추가 정보가 없습니다.Java의 오버플로는 종종 가상 기계 충돌로 인해 합리적으로 상세한 오류 파일을 제공합니다.오버플로가 발생하는 언어에 관계없이 오버 플로우는 원래 오버플로 소스의 적절한 디버깅 및 식별에 의해 거의 항상 수정 될 수 있습니다.널리 받아 들여지는 프로그래밍 관행은 일반적으로 메모리의 모든 세그먼트에 대해 프로그램이 할당되므로 프로그램이 자체적으로 삭제해야한다고 지시합니다.C ++는이 메커니즘을 허용하며, 이러한 방식으로 신중한 모니터링은 프로그램이 사용하는 메모리의 양을 최소로 유지할 수 있습니다.명시 적 메모리 관리를 제공하지 않고 암시 적 메모리 관리를 사용하는 언어는 스택 오버플로 오류에서 보호하기가 더 어렵습니다.Java는 가상 머신 내에서 자체 메모리를 처리하므로 더 많은 것을위한 공간을 만들기 위해 데이터를 명시 적으로 삭제할 수 없습니다..이것은 처음에는 그럴듯 해 보이지만 실제로는 그렇지 않습니다.암시 적 메모리 관리가있는 언어에는 종종 불필요한 메모리 블록을 자유롭게하는 쓰레기 수집가가 있지만 이러한 쓰레기 수집가는 프로그래머가 기대할 때 항상 작동하지는 않습니다.쓰레기 수집기에 의존하는 것은 상대적으로 위험하며 오버플로 오류로부터 프로그램을 항상 보호 할 수는 없습니다.

오버플로 오류는 대격변이 될 수 있고 전체 프로그램을 중단하거나 거의 침묵하고 프로그램이 계속 될 수 있습니다.이러한 두 번째 유형의 오류는 이전에 많은 줄의 코드 라인에서 발생한 오류가 발생할 수 있기 때문에 종종 찾기가 가장 어렵습니다.스택 오버 플로우는 종종 전체 프로그램을 통해 검색을 필요로하지 않지만 오버플로 후에 프로그램이 더 길어질수록 오류가 더 어려울수록 오류가 더 어려울 수 있습니다.