초기화되지 않은 포인터는 위험합니까?

초기화되지 않은 포인터는 위험합니까?

초기화되지 않은 포인터(C)가 다른 프로그램의 데이터나 프로그램 코드가 포함된 주소를 가리킬 수 있다는 내용을 읽었습니다. 책에서는 이로 인해 피해가 발생할 수 있다고 말합니다.

이 문제가 최신 운영 체제의 문제입니까? Linux에는 가상 주소 공간이 있으므로 주소는 특정 프로세스에만 연결된다는 것을 알고 있습니다. 이렇게 하면 포인터가 다른 프로세스에서 사용하는 주소를 가리켜서는 안 됩니까? 이것이 Windows, macOS 또는 Unix에 해당되는지는 모르겠습니다.

오늘날 이것이 심각한 문제입니까?

답변1

Windows, MacOS, Unix에서도 마찬가지입니다. 이러한 모든 시스템의 일반적인 경우 초기화되지 않은 포인터는 현재 프로세스 내에서 예기치 않은 동작만 일으킬 수 있습니다.

그럴 수 있다는 말은 아니다안 돼요발생하다. 이러한 모든 시스템에서 프로세스는 자발적으로 다른 프로세스와 메모리 영역을 공유하도록 배열될 수 있습니다( shmget/ shmat또는 를 사용하여 mmap). 이 경우 한 프로세스의 잘못된 포인터로 인해 공유 데이터가 손상되어 다른 프로세스가 오작동할 수 있습니다.

관련 정보