realloc에 대한 질문입니다.
글쓴이: wkaxld / 작성시간: 토, 2004/02/21 - 9:09오전
아래 코드는 일예로 간결화 시켜놓은겁니다. 내용은 보시는 바와 같이 간단히 함수 realloc_test가 메모리 블락 두개 a, b를 받은 후 크기를 재 조정한 후 값을 대입 합니다. 물론 realloc_test함수 안에서는 잘 작동합니다만, main함수로 돌아오면 대입된 값들이며, 물론 선두 번지들까지 realloc_test안과는 다르게 나옵니다.
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 5 int realloc_test(int *,int *,int); int main() { int i; int n; int *a,*b; n=1; a=(int *)malloc(sizeof(int)*n); b=(int *)malloc(sizeof(int)*n); realloc_test(a,b,n); for(i=0;i<N;i++){ printf("a[%d]=%d b[%d]=%d\n",i,a[i],i,b[i]);} printf("Freeing memory block\n"); free(a); free(b); printf("Complete!!\n"); return(1); } int realloc_test(int *a,int *b,int n) { int i; int *new_a,*new_b,*old_a,*old_b; new_a=(int *)realloc(a,sizeof(int)*N); new_b=(int *)realloc(b,sizeof(int)*N); a=new_a; b=new_b; for(i=0;i<N;i++){ a[i]=i+2; b[i]=i+N+2; printf("===In func.: a[%d]=%d b[%d]=%d\n",i,a[i],i,b[i]); } printf("\n"); return(1); }
위의 예제에서 b를 넘기지 않는경우는 예상대로 작동이 됩니다. 메모리 블락을 하나만 넘기는게 특별한 경우인가요?
Forums:
Re: realloc에 대한 질문입니다.
이 함수를 int realloc_test(int **, int **, int)로 하셔야 할 듯 합니다.
네 갈길을 가라! 남이야 뭐라든!
답변 감사 드립니다.
답변 감사 드립니다.
잠온다~!
[code:1]#include <stdio.h>#inclu
이런식의 구성도 가능하죠 ^^
---------------------------------------
세계는 넓고, 할일은 많다.
댓글 달기