티스토리 뷰

segmentation Fault는 세그멘테이션 위반, 세그멘테이션 실패라고도 하며 세그폴트로 줄여서 쓰기도 한다.


세그멘테이션 결함의 주된 원인은 다음과 같다.

1. 프로그램이 허용되지 않은 메모리 영역에 접근 시도

2. 허용되지 않은 방법으로 메모리 영역에 접근을 시도


이중에서도 코드상에 가장 연관되어 있는 부분이 포인터이다.


C++에서 segfault가 발생하는 상황은 다음과 같다.

1. null 값을 가리키는 포인터에 접근하는 경우

int* myptr = NULL;

*myptr = 3;


2. read-only로 표시된 메모리 영역에 쓰려고 할때

char* myptr = "hello world";

*myptr = 'h';


3. 더 이상 존재하지 않는 메모리 영역을 가리킬 때

char* myptr = NULL;

{

char c = '1';

myptr = &c;

}

*myptr = 'S';    

// myptr은 중괄호와 함꼐 존재하지 않게 되었는데 접근했으므로 segfault 발생

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함