1. Align > 메모리가 cpu의 bit수에 맞춰서 사용되는 것
ex) char + int > 5byte가 아니라 8byte가 된다.(32bit cpu기준)
Memory(□ : 미사용 , ■ : 사용 )
■□□□ > char 1byte를 사용하고 Align에 의해 3byte가 더 소비된다.
■■■■ > int 4byte를 사용한다
□□□□ ┐
□□□□ ┘> 미사용 메모리...
2. 파라매터 이름( 용어 중요 )
┌actual : Main
└formal : function
3. 포인터
ⓐ 선언 : int *p;
> p의 타입이 인트가 아니라 p가 가르키는 것이 int이다.
ⓑ p = (int *)malloc(sizeof(int));
> 메모리 할당
ⓒ free(p);
> free를 통해서 메모리의 효율을 올릴 수 있다.
ⓓ p = NULL
>오류를 막기 위해 NULL을 지정해 준다.
1) Generic Pointer
ⓐ 선언 : void *ptr
>원하는 타입으로 동적할당
※ 주의점
> *p.Year = *(p.Year) > Error
> (*p).Year = p -> next >course
====>우선 순위를 반드시 생각해야한다.
4. Recoursion
> "base case"해결 책을 생각
ex) 분활 정복 기법
> 탐색 범위를 반씩 누눠가며 함수 실행
1000 > 500 > 250 > ...... > 2 > ①->베이스 케이스
>해결책 모색 후 위로 돌아간다.
>>최대 10번 탐색으로 해결 가능...
5. Memory
메모리의 효율을 위해
끝과 끝에서 heap과 stack이 시작되어
메모리가 배정된다.
> 스텍이 힙으로 진출하는 것을
방치하는 공간(stack overflow)
return address > main에 돌아갈 줄 수 ( 주소 )
return value > 리턴 값
>> int *s를 선언했을때 메인의 local variables와 heap에
동시에 선언 되는 것에 주의한다
> "base case"해결 책을 생각
ex) 분활 정복 기법
> 탐색 범위를 반씩 누눠가며 함수 실행
1000 > 500 > 250 > ...... > 2 > ①->베이스 케이스
>해결책 모색 후 위로 돌아간다.
>>최대 10번 탐색으로 해결 가능...
5. Memory
메모리의 효율을 위해
끝과 끝에서 heap과 stack이 시작되어
메모리가 배정된다.
> 스텍이 힙으로 진출하는 것을
방치하는 공간(stack overflow)
return address > main에 돌아갈 줄 수 ( 주소 )
return value > 리턴 값
>> int *s를 선언했을때 메인의 local variables와 heap에
동시에 선언 되는 것에 주의한다