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
[7654] Re:malloc에 관련된 질문.
이경문 [gilgil] 1604 읽음    2001-05-21 21:39
jeroh 님이 쓰신 글 :
: malloc을 했는데도,memory가 할당되지 않아, 변수 값이 NULL로 나오는군요.
: mallo이 안되는 경우는 어떤 경우인가요?
:
:
: 그리고 또 다른 질문..
:
: char* test;
: test = (char*)malloc(sizeof(a));
: strcpy(test,"test");
: printf("%s",test);
: free(test);
: printf("%s",test);
:
: 아래의 code에서 test를 free해주고 난 다음에 printf를 하면 여전히 test의 값이 찍히는데,
: free를 하면 memory가 해제되니까 안찍혀야 되는 거 아닌가요?
:
: 또, free(test)와 test=NULL 의 code에는 어떤 차이가 있나요?
:
:
malloc을 했을 때 NULL이 나오지 않는 원인은 많이 있지만
메모리가 부족해서 NULL을 return하는 경우가 많습니다.
그리고 메모리를 하였다 하더라고
다른 루틴에서 그 메모리를 malloc하여 사용하기 전까지는
그 메모리 영역의 내용이 변경되지 않을 수 있습니다.
즉 OS가 메모리 해제했다는 flag만 남기지 malloc했던 메모리의 모든 영역을
깨끗이 지우지는 않는다는 얘기입니다.
가장 아래줄의 printf는 상당히 불안한 코드로 에러를 유발할 수 있습니다.

free(test)는 test가 가르키고 있는 곳의 메모리를 해제할 뿐이지
test변수 자체를 변경시키지 않습니다.
test = NULL은 pointer변수 test의 값을 NULL(0)으로 할당하는 단순한 assign statement입니다.

+ -

관련 글 리스트
7653 malloc에 관련된 질문. jeroh 1889 2001/05/21
7660     Re:malloc에 관련된 질문. 레조 1764 2001/05/22
7677         덧붙이자면, Drost 1551 2001/05/22
7672         Re:Re:malloc에 관련된 질문. jeroh 1661 2001/05/22
7654     Re:malloc에 관련된 질문. 이경문 1604 2001/05/21
7655         Re:Re:malloc에 관련된 질문. jeroh 1715 2001/05/21
7656             Re:Re:Re:malloc에 관련된 질문. 이경문 1687 2001/05/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.