-
Tales of Mintrupt - about int* and int[]myCode/GeneralKnowledge 2016. 4. 21. 19:16
일부 C++ 컴파일러에서 비표준으로 지원할 수도 있지만
원래는 크기가 컴파일 타임에 완전하게 정해져야 하고
메모리 주소도 그냥 알아서 들어갈 거야
int*를 int 하나에 대한 포인터가 아니라
동적 할당된 배열의 첫 부분을 가리키는 용도로 쓴다고 하면
int[]랑 사용할 때는 비슷하지만
내부적으로는 많이 다르지 않을까!
지역 변수로 선언된 배열도 마찬가지로
스택 포인터에서 상대적인 시작 위치만 가지고 있고
그 상대적인 간격(배열 포인터 상수)는 컴파일 타임에 고정되어서 들어감
반면에 동적 할당된 배열은 운영체제에다 메모리를 달라고 부탁을 하면
운영체제는 사용 가능한 메모리를 마련해서 주소를 C 런타임 라이브러리로 돌려주고
라이브러리는 받은 메모리를 다시 잘 쪼개서
(보통 운영체제는 메모리는 4K 정도 단위로만 할당해서 줌)
실제로 프로그래머가 작성한 코드에서 요청한 공간만큼 여유가 있는 메모리의 시작 주소를 주는 거지
스택 메모리와 힙 메모리에 대해서 잘 이해해놓자! 원준아 나는 너를 응원해!
'myCode > GeneralKnowledge' 카테고리의 다른 글
[C++] Decimal to Binary (0) 2016.08.15 KLDP 포스트 하나, 및 기초 함수 구현법 (strcpy, atoi) (0) 2016.07.27 [C++] 조합(Combination) 구하기 (0) 2016.06.06 Towers of Hanoi (0) 2016.04.24 C scanf 버퍼 문제 (0) 2016.04.11