|
제가 처음 씨를 배울때는 정말로 사소한 문제를 잡으려고..
꼬박밤을 세워가면서 했는데..
쩝~..
malloc은 메모리중 특정공간을 사용할수 있도록 확보해주는 역활을 하는 함수입니다.
return 값은 void * 이고요.(즉 포인터입니다.)
그런데.. prt은 char * 입니다.
따라서 형이 맞지 않기 때문에 나오는 문제입니다.
prt = (char *) malloc... 이렇게 해서 캐스팅 시키면.. 없어질겁니다.
메세지를 읽고 생각해 보시면.. 아마 파악 할 수 있었을텐데..
또, 한가지 malloc으로 메모리를 예약하면..
반드시 free로 해제해 주어야 합니다.
free를 하지 않으면.. 다른 프로그램에서 그 만큼의 공간을 사용하지 못합니다.
(메모리 누수..)
몇번 반복하면.. 메모리 부족으로 문제가 생깁니다.
숙제:
malloc/free 와
farmalloc/farfree
new / delete의 차이가 무엇일까요?.
위 숙제의 내용을 이해하시면.. 프로그램 하는데 도움이 될겁니다.
김경래 님이 쓰신 글 :
: C:\C test\yj\oo.cpp(7) : error C2440: '=' : cannot convert from 'void *' to 'char *'
: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
: 이런에러가뜨네요 ㅠ.ㅠ;;
: 지송하지만 이것두 갈켜주세요
:
:
: 조준회 님이 쓰신 글 :
: :
: : /0 이 아니라.. \0인것 같군요..
: :
: : 김경래 님이 쓰신 글 :
: : : 책의 예제대로 그대로했는데 값이 왜 안올까요--;;
: : : 고수님 갈켜주세요 정말지송합니다.
: : :
: : : #include<stdio.h>
: : : #include<stdlib.h>
: : : char count,*ptr,*p;
: : :
: : : void main()
: : : {
: : : ptr = malloc(35 * sizeof(char));
: : :
: : : if(ptr == NULL)
: : : {
: : : puts("Memory allocation error.");
: : : exit(1);
: : : }
: : :
: : : p=ptr;
: : :
: : : for(count =65;count<91;count++)
: : : {
: : : *p++=count;
: : :
: : : *p='/0';
: : :
: : : puts(ptr);
: : :
: : : }
: : :
: : : }
|