2010-07-16 5 views
0

스택 손상과 정적 손상의 차이점에 대해 누구나 설명 할 수 있습니까?정적 손상과 스택 손상의 차이점

+1

"정적 손상"이라는 용어를 들어 본 적이 없습니다. 레퍼런스가 있으십니까? –

+0

나는 어떤 언급도 가지고 있지 않다. 나는 스택 손상에 대해 알고 있었다. 하지만 정적 손상에 대해 이야기하는 사람들의 말을 듣고있었습니다. 그래서 차이점을 확인하고 싶었습니다. :-) – Akki

답변

0

스택 손상은 프로그램 작동으로 인한 메모리 손상입니다. 무제한 배열의 복사는 스택에있는 요소를 덮어 씁니다 (로컬 변수, 주소 반환 등). 결과적으로 프로그램이 충돌하거나 정의되지 않은 동작을 보입니다. 정적 손상 (정적 변수의 손상을 의미 함)은 일종의 프로그래밍 오류로 인해 예기치 않은 값이 발생하여 일시적인 버그가 발생하는 경우 일뿐입니다.

+0

감사합니다 .. 당신은 정적 변수의 손상에 대해 좀 더 설명 할 수 있습니까? – Akki

+0

정적 변수는 선언 된 위치와 상관없이 전체 프로그램 기간 동안 존재하는 변수입니다. 이는 프로그램의 데이터 세그먼트에 저장되기 때문입니다. 따라서 여러분의 뜻대로 데이터 세그먼트의 어떤 종류의 손상 (정적 변수의 오버플로에서 오는 것일 수도 있음)에 질문하거나 간단한 것을 묻습니다. 예 : 동기화하지 않고 함수에서 선언 된 변수를 수정하는 2 개의 스레드가 있지만 변수가 정적으로 선언 되었기 때문에 thread-safe 연산이 아니며 변수에 예기치 않은 값이 포함되어 있습니다 – Cratylus

+0

이렇게 추출한 내용은 다음과 같습니다. 정적 손상은 빌드에 따라 다릅니다. 컴파일 된 특정 코드에 대한 데이터 세그먼트의 레이아웃에 따라 다르지만 스택 손상은 빌드와 독립적입니다. 특정 코드가 항상 동일한 스택을 생성하기 때문입니다. 제가 이해할 권리가 있습니까? – Akki

관련 문제