1. 메모리 구조
1). 코드 : 프로그래머가 만든 함수, 내장 함수들이 이곳에 저장된다.
2). 데이터 : 전역 변수(글로벌 변수), 정적 변수들이 이곳에 저장되고 프로그램이 실행되고 끝날때까지 남아있는다.
3). 스택 : 지역변수, 함수의 인자(파라메터) 들이 이곳에 저장되고 함수가 실행될때부터 종료될때까지 남아있는다.
2. 동적할당 함수들
1) malloc()
int* pmall = (int*)malloc(개수 * 변수의 크기?); 정도로 선언할수 있고 인자로 준 크기만큼 힙에 메모리를 할당한다.
이 힙에 할당된 값은 프로그램 종료시까지 남아 있고. pmall에 힙의 시작주소가 담겨 있어 return하여 함수가 끝난 후에도 사용할수 있다.
2) calloc()
int* pcall = (int*)calloc(개수, 변수의 크기); 얘는 malloc()와 비슷하나 인자를 두개 받는다. 대충 malloc()가 *로 구분하던걸 쉼표로 더 명확하게 해놓은 느낌. 암튼 특징은 위와 동일하다.
3) realloc()
int* preal = (int*)realloc(pmall, 새로운 개수 * 변수의 크기); 형태로 기존에 힙에 할당했던 배열의 크기를 바꾼다.
리턴값은 만약 힙 값이 여유가 있다면 같고 여유가 없다면 기존의 값은 복사되어 다른 주소에 저장된다.
+ 이 경우 인자로 전달된 것들은 free();로 해제하지 못한다.
4) free()
free(이름); 할당한 힙메모리를 해제하는 함수이다. 요걸 안하면 메모리 누수가 생길수 있다고 한다.
+기억나는데로 머리에 남은걸 거의 적은거라 틀린게 많을수 있습니다.
'프로그래밍 > c언어 기초부터 실무까지 복습' 카테고리의 다른 글
자료구조_ 1_구조체의 정의, typedef 320~330 (0) | 2021.02.18 |
---|