|
첫번째 질문은
책에서 malloc()함수를 공부하던 도중 너무 이상해서 질문을
드립니다.
책에는 분명 malloc()함수를 쓰면 그에대한 첫번째 주소를 돌려
준다고 했는데......
실제로는 (char *)malloc(인수) , (int *)malloc(인수)......
뭐 이런식으로 쓰이던데 어느것이 맞는지 잘 모르겠어요.
책대로라면
char *p;
p=malloc(10); //이렇게 하면 포인터p는 메모리를 10개잡은곳을
가르킨다..... 라고 할수 있다던데 실제로는 malloc앞에 포인터와
같은 자료형과 '*'표시를 해야 하더군요.
즉
char *p;
p=(char *)malloc(10); //뭐 이런식으로 말이죠......
어느것이 맞는 방법인지 아니면 둘다 맞는것인데 제가 사용을
잘못한건지 꼭좀 가르쳐 주세요.
그리고 두번때 질문은
메모리를 문자열보다 적게 malloc()함수로 할당했는데도 전혀
무리없이 출력이 되더군요.
믿의 예문에서 myptrs.p2 = (char *)malloc(5); 의
malloc()안에 값이 5는 훨씬 넘어야 할것 같은데 이상하세 5
인데도 실행이 무리없이 되더군요.
꼭좀 이유를 가르쳐 주세요.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct msg {
char p1[30];
char *p2;
};
struct msg myptrs;
void main()
{
myptrs.p2 = (char *)malloc(5); // <--5가아니라
// 15정도는 되어야 하는것 아닌지요?
strcpy(myptrs.p1, "I WILL DO MY BEST");
strcpy(myptrs.p2, "I CAN DO IT");
puts(myptrs.p1);
puts(myptrs.p2);
}
|