728x90
반응형
memcpy함수를 알아보다가 restrict라는 것을 마주쳐, 한번 탐구해보고자 한다.
restrict란?
restrict란 포인터 변수에 사용 가능한 키워드이다. c99이후의 버전에서 사용이 가능하다.
풀어서 설명하자면 특정메모리를 사용하는 포인터가 단 하나(restrict로 표기된 포인터들에 대해서는 다른 restrict면수들과 같은 공간을 가리키지 않는다고)임을 뜻하게 하므로서 메모리가 중첩되어일어나는 메모리 손실이나 오류가 일어나는 것을 막아내고자한 의도라고 볼 수 있다.
그럼 restrict를 붙이기만 하면 메모리 중첩을 막아주는 것일까? 그것은 아니다. restrict의 궁극적인 목표는
포인터들이 다른 공간을 가리키고 있는 지를 연산해주는 과정을 생략하여 더 뻐른 연산을 도와주는 것에 있기 때문이다.
포인터를 역참조하여 연산을 하기 전에 대체적으로 먼저 2개 이상의 포인터들 중에 같은 메모리 공간을 가리키는 것들이 있는 지 확인하는 과정을 거치기 떄문이다.
그러나 이 경우 의도하지 않은 결과가 나올 수 있으니 사전에 주의를 기울여야한다.
728x90
반응형
'C' 카테고리의 다른 글
strlcpy 함수의 구현 (0) | 2023.10.16 |
---|---|
memcpy 함수의 구현 (0) | 2023.10.13 |
bzero 함수의 구현 (2) | 2023.10.13 |
memset 함수의 구현 (2) | 2023.10.13 |
char 와 unsigned char 의 차이 (0) | 2023.10.13 |