[CS] 포인터

jae·2024년 10월 4일

CS

목록 보기
3/6

포인터란?

'메모리 주소를 저장하는 변수'

C언어에서 주로 사용되는 개념으로 특점 데이터의 메모리 위치를 알수 있어서
성능 향상과 메모리 관리에 유용하게 사용된다.
역으로 메모리 누수와 오류를 발생시킬수 있다


c언어의 장점이자 단점

장점

  1. 메모리에 직접 접근하여 속도를 향상시킬수 있다.
  2. 동적으로 메모리를 할당하거나 해제시킬 수 있다.
  3. 메모리나 하드웨어를 다루는 데 유용하다.

단점

메모리 누수와 댕글링 포인터 발생 가능

  • 댕글링 포인터 : 이미 삭제된 데이터의 주소를 가르킴

타언어에서의 포인터

스위프트

스위프트에서는 포인터 역할을 하는 UnsafePointer, UnsafeMutablePointer 등이 있으나
이름에 unsafe 즉 안전하지 않기에 사용이 지양되고 있으며
자동 메모리 관리(ARC, Automatic Reference Counting)가 있기에 메모리를 직접 관리할 필요가 없다.
자동으로 메모리를 비우고 채워준다

  • ARC : 메모리가 참조되면 할당하고 삭제되면 해제하며 자동으로 관리

플러터

플러터에서는 dart:ffi 패키지를 통해 포인터 사용이 가능하나 특수한 경우에만 사용하며 대부분의 경우 메모리 주소를 직접 다루지않고 GC 를 사용하여 자동화 관리한다.
가비지 컬렉션(Garbage Collection, GC)를 이용하여 사용하지 않으면 자동으로 메모리에서 해제 시키고 사용하면 적용 시킨다.
JS에서도 GC를 사용하며 리액트에서 컴포넌트의 생명주기가 다하면 메모리상에서 삭제를 시킨다

0개의 댓글