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
[38631] Re:Re:[질문] malloc함수와 문자열.
춤추는대수사선 [iamkom] 779 읽음    2005-01-04 17:08
감사합니다.

void main() {
   
    char *a;
    a= (char *)malloc(50);
    char chtemp[]="Let me say those words as hently as I can";
    a= chtemp;   //이부분//
    printf("%s \n", *a);//그부분//
    free(chtemp);
  
}

---------------------
이렇게 해봤는데
'터보C++3.1 for 윈도우' 에서는
'and Itle' 이라고 출력되고,
그런데 비주얼 C++에서는
검은창 떴다가 아무글자도 없이
'잘못된연산을 수행하....' 라고만 뜨는군요.


그리고  몇가지 질문을 더 드립니다.....^^;;

//그부분// 말인데요.
'*a'를 그냥 'a'로 놓으면 터보C에선 출력이 되었습니다.
비우얼C++에선 "Let me say those words as hently as I can" 이렇게 출력되고,
오류메세지 떴구요.

그리고
free(chtemp)에서, 외부메모리를
*a에 할당했으니까 free(*a)라고 해야되지 않나요?
근데 free(*a)로 쓰고 코딩하니 에러가 생기더군요...
아...정말 복잡하고 답답할 따름입니다. T^T

번번히 도와주셔서 감사합니다.
또한번 부탁드립니다.




김민식 님이 쓰신 글 :
: 춤추는대수사선 님이 쓰신 글 :
: : 문제는
: : char chtemp[]="Let me say those words as hently as I can"; 의 문자열을
: : 동적 메모리에 보관하고 이를 출력하는 프로그램을 작성하여 보세요.
: :
: : ---------------제가 풀어볼려고했던 답--------------------
: : #include <stdio.h>
: : #include <stdlib.h>
: :
: : void main() {
: :
: :     char chtemp[]="Let me say those words as hently as I can";
:
:     char chtemp[]="Let me say those words as hently as I can"; 의 경우 chtemp 는 문자열상수.
:
:     굳이 chtemp 에 다른 메모리를 할당 하려면 char *chtemp = "..."; 로 사용을 하셔야 하죠.
:
: :     chtemp = (char *)malloc(50);  //이부분//
:
:     chtemp 에 새로운 메모리를 할당 하셨으므로, 위의 "Let me say those words as hently as I can";
:
:     문자열은 미아가 되겠네요.
:
: :     printf("%s \n",*chtemp);
:
:     위 부분에서 Access violation 이 발생할 겁니다. *chtemp 는 문자 'L' 을 가리키는 것이고,
:
:     이를 "%s" 로 출력하고자 하면 'L' 값을 포인터로 번역해서 전혀 엉뚱한 곳의 내용을 출력하려고
:    
:     할것 같네요.
:
:
:     % 정리하면 위 말씀하신 부분을 새로운 변수에 할당하도록 변경하셔야 합니다.
:
:                char *a;
:
:                a = (char *)malloc(50);
:
:
:
:
: :     free(chtemp);
: :     }
: : -------------------------------------------------------------
: :
: : //이부분// 에서 에러가 나더군요!
: : 에러메세지는(터보C++3.1 for Windows) Lvalue required 이고,
: : 비주얼C++은
: : error C2440: '=' : cannot convert from 'char *' to 'char [42]'
: : There are no conversions to array types, although there are conversions to references or pointers to arrays
: : Error executing cl.exe.
: : 이렇게 나오네요
: :
: : 뭐가 문제일까요.......ㅡㅡa
: :
: : 김민식님 감사합니다.

+ -

관련 글 리스트
38627 [질문] malloc함수와 문자열. 춤추는대수사선 948 2005/01/04
38629     Re:[질문] malloc함수와 문자열. 진수.네모 1036 2005/01/04
38632         Re:Re:[질문] malloc함수와 문자열. 춤추는대수사선 1056 2005/01/04
38633             Re:Re:Re:[질문] malloc함수와 문자열. 진수.네모 1274 2005/01/04
38628     Re:[질문] malloc함수와 문자열. 김민식 1022 2005/01/04
38631         Re:Re:[질문] malloc함수와 문자열. 춤추는대수사선 779 2005/01/04
38634             Re:Re:Re:[질문] malloc함수와 문자열. 라스코니 936 2005/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.