C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[6490] malloc()함수에 대한 2가지 질문이요.
전승호 [] 2186 읽음    2001-04-01 15:26

첫번째 질문은
책에서 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);
}


+ -

관련 글 리스트
6490 malloc()함수에 대한 2가지 질문이요. 전승호 2186 2001/04/01
6491     Re:malloc()함수에 대한 2가지 질문이요. 남병철 2493 2001/04/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.