안전하지 않은 코드
안전하지 않은 코드 (Unsafe code)
언어의 이 부분들은 안전하지 않은 것으로 간주돼요:
- 원시 포인터가 포함된 코드: Pointer 타입과 pointerof.
- allocate 클래스 메서드.
- C 바인딩이 포함된 코드
- 초기화되지 않은 변수 선언
"안전하지 않다"는 것은 메모리 오염, 세그멘테이션 폴트, 크래시가 발생할 수 있다는 뜻이에요. 예를 들어:
a = 1
ptr = pointerof(a)
ptr[100_000] = 2 # undefined behaviour, probably a segmentation fault
하지만 일반 코드는 보통 포인터 조작이나 초기화되지 않은 변수를 다루지 않아요. 그리고 C 바인딩은 보통 null 포인터·경계 검사를 포함한 안전한 래퍼로 감싸져 있어요.
어떤 언어도 100% 안전할 수는 없어요. 어떤 부분은 어쩔 수 없이 저수준이고 운영체제와 인터페이스하며 포인터 조작을 포함하게 마련이에요. 하지만 그걸 추상화하고 더 높은 레벨에서 동작하며, (수학적 증명이나 철저한 테스트를 거쳐) 저수준 부분이 안전하다고 가정하면, 전체 코드베이스가 안전하다고 확신할 수 있어요.
출처: Crystal 공식 문서
더 알아보기 (Learn more)
- 포인터 사용법은 포인터 (Pointers) 문서를 확인해 보세요.