▶연결리스트_동적자료형/정적자료형
정적자료형 : 크기가 프로그램의 선언부에서 한번 정해지면 바뀔 수 없다.
데이터의 삽입과 삭제가 자유롭지 못하다. 또, 메모리를 사용하는데 비효율적이다 ex) 게임 로그인 500만명을 예상하고 메모리를 잡아놨는데, 20명이 로그인을 함. 낭비중에 낭비! |
동적자료형 : 프로그램 실행시 한번 선언된 변수는 함수의 실행이 종료될 때 까지 지속되는 정적자료형과는 다른 개념이다. 동적자료형의 변수는 정적자료형의 변수처럼 변수 자체가 이름을 갖는 것이 아니라 포인터변수(참조변수)를 이용하여 간접적으로 접근한다. 이때 참조변수는 동적변수의 주소를 가지고 있다.(심볼테이블에 안적힘) ************************************************************************************************** 실행될때 메모리를 가져온다는 개념! 주소도 실행될때마다 불러오므로 매번 다르다! 이때 불러올 자료형은 개발자가 정한다! 동적자료형은 Heap에서 메모리를 빼오며, 운영체제가 관리하고 파일을 만들지 않는다! ********************************************************************* |
▶ Malloc() 함수, free() 함수
* malloc() (Memory allocation = 메모리 위치 함수) |
안쓰는 메모리를 주는 것이기 때문에 없으면 0 을 반환하고, 메모리를 주지 못한다! |
하지만 malloc() 함수는 자동변수가 아니므로 메모리를 가져오면 반드시 free() 함수로 메모리를 지워줘야 한다. 반드시! 안그럼 터짐 펑~
| |
void * 는 선언시에 가리키는 곳이 미정이므로 모든 포인트 자료형에 쓸수 있다. 하지만 printf() 로 출력을 할때 가리킬수는 있지만, 안에 있는 본 값의 자료형이 다르기때문에 형동등성에 의해서 출력이 안됨, 그래서 캐스팅을 이용하여 출 력한다. void 는 반환자료가 없지만 void * 는 주소라는 것을 기억해주자 ! | |
void * malloc( size_t size ) , 여기서 size_t 는 typedef 을 써서 만들은 자료형이고 unsigned int 이다. malloc() 함수는 할당메모리의 시작주소를 반환한다.
※보통 malloc() 함수를 쓰는 형식
int *p = malloc(sizeof(자료형)); | |
void free(void *ptr) ※보통 free() 함수를 쓰는 형식 free(p); |
▶ 예문
|
|
'C++프로그래밍' 카테고리의 다른 글
2013.04.22_연결리스트_free()기초 (0) | 2013.04.22 |
---|---|
2013.04.19_연결리스트의 구조 (0) | 2013.04.19 |
2013.04.17_구조체 포인터변수사용 (0) | 2013.04.17 |
2013.04.16_C언어_구조체 (0) | 2013.04.16 |
2013.04.15_구조체_메모리관리 (0) | 2013.04.15 |