티스토리 뷰

동적메모리할당

  • 변수를 선언하는 대신 프로그램의 요청으로 메모리를 할당
  • dynamic memory allocation
  • malloc 을 호출하여, 동적메모리 할당을 요청하면 요청하는 요구하는 크기 메모리 할당

malloc 함수
  • int *p
  • p=(int*)malloc(40)
  • (int *) 부분은 malloc이 반환하는 주소는 타입이 업는 주소(void *)이다. 정수들을 저장하기 위해 이것을 int * 로 변환
  • 할당받을 크기를 byte단위로 지정. 여기서 10개의 정수를 저장하기 위해 40바이트를 요청하였다.

int * array=(int *)malloc(4*sizeof(int));

int * tmp=(int *)malloc(8*sizeof(int));
int i;
for(i=0;i<4;i++)
 tmp[i]=array[i];
array=tmp;

위와같이 배열을 확장시킬수있음.
엄밀히 말하면 확장시킨 임시배열에 기존 값들을 넣고 기존배열에 다시 넣는것.
좋은코드는 아님.

배열을 위와 같이 확장시키고,배열의 크기를 키우는일이 필요하다면

 int array[4]같이 처음부터 배열로 선언하지 말고

int *array=(int *)malloc(4*sizeof(int)) 와 같이 선언해야 한다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함