Dia Egg - Shugo Chara

C

restrict란?

별ㅇI 2023. 10. 13. 17:58
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