카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/16

C 언어 정적 메모리 요점 정리


C언어 배열 메모리 관리


정적 메모리 할당
static : 정적 = 프로그램 시작시 메모리 자원 할당
프로그램이 정적 메모리로 할당되는 경우, 프로그램 종료시 까지 메모리 자원을 사용하게 된다.
프로그램 입장에서는 사용하기 간편하다.


단, 할당할 메모리를 계산하지 못 할 때, 문제가 발생한다.

정적 메모리를 할당해 사용하고 있는 프로그램이 있다고 하면, 어떤 이유에서 메모리의 공간을 확보해야 할 문제가 발생 한다면 정적으로 잡은 메모리를 늘리려고 할 때 문제가 발생한다.

이것 또한 해결 방법으로 메모리 복사해 다시 할 당 할 수 있지만 효율적인 방법이 아니다.


int main(voie){

int i, static_memory[10], n=10; // p[10] 정적 메모리 할당


/* n 개의 정수 블록을 할당 */

for(i=0; i<n; i++){

static_memory[i] = i;

}


/* 배열 값 출력*/

for(i=0; i<n; i++){

printf("%d\n", static_memory[i]);

}

}


정적 메모리 할당은 일시적으로 배열을 사용 할 때 자원 낭비가 발생하게 된다.
자료 크기가 변화할 때 효과적으로 대체하지 못한다.

장점은 빠르다.
대량의 자료나 메모리를 많이 사용할 때 정적 메모리 할당은 사용하지 말아야 한다.

대량의 자료에서는 동적 메모리 할당 한다.

댓글 없음:

댓글 쓰기