포인터,pointer

메모리,memory상의 위치를 가리키는 변수인가 아님 그런 변수의 형,type인가?
{
메모리
  • 할당
  • 해제
  • 누수
  • 포인터
  • 주소

메모리 관련 C언어 함수

함수 원형 하는 일 리턴값
memset void *memset(void *str, int c, size_t n) memset(위치, 값, 크기). 위치에 값을 크기만큼 채우기 str (이것 관련해서 hn에서 논쟁이 있었는데..TBW)
memcpy
memccpy void *memccpy(void *dest, const void *src, int c, size_t n); src에서 dest로 n바이트 복사하며 도중에 문자 c를 만나면....TBW
memmove
memchr 메모리에서 문자 찾기
memcmp
memicmp 대소문자 구분없이 비교

}

LINKTHESE:
주소,address
메모리_관리,memory_management
MMU
메모리_할당,memory_allocation
동적_메모리_할당,dynamic_memory_allocation
{
할당받은 메모리는 사용이 끝나면 해제(free)해야 함.
C언어는 수동 해제해야 하 며,
garbage collection을 지원하는 언어는 사용되지 않는 메모리를 자동으로 해제함.
동적 메모리를 해제하지 않아서 가용 메모리가 줄어드는 현상은 memory_leak.

}
garbage_collection
reference/dereference
call_by_reference
reference_counting
memory_leak





1. Dangling pointer

AKA 미결합 포인터, 댕글링 포인터, 허상 포인터(WpKo), 와일드 포인터(wild pointer)

Ex.
#include <stdio.h>

void func(int *p) {
    int b = 10;

    p = &b;
    printf("*p = %d\n", *p);
}

int main() {
    int *a;

    func(a);
    printf("*a = %d\n", *a);
}

2. void 포인터 (C)

int main()
{
    int i = 0;
    float f = 1.0f;
    void *p;

    p = &i;
    *(int *)p = 2;
    p = &f;
    *(float *)p = 3.0f;
}

3. near/far 포인터 (16bit IBM PC)

보통 도스,DOS에서 씀
(Win16에서는?) windef.h에 정의되는데 Win32로 바뀌면서 빈 문장으로 처리하도록 변경됨.

16비트 환경에서는 far 포인터 관련 함수가
malloc farmalloc
calloc farcalloc
realloc farrealloc
memset _fmemset
등의 near와 다른 별도의 함수로 분리되어 있음.

매크로
{
MK_FP(seg, ofs)
16비트 segment와 offset을 받아 far pointer를 만들어 줌
FP_SEG(fp)
far pointer에서 세그먼트 추출
FP_OFF(fp)
far pointer에서 오프셋 추출
}

4. smart pointer (C++)