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
[19190] Re:Re:Re:아 그리고 그 디버깅 전문 프로그램 사용법좀..아참 그리고 볼랜드c++이란 볼랜드 시빌더랑 다
김대의 [] 846 읽음    2002-06-08 20:53
김백일 님이 쓰신 글 :
: 김대의 님이 쓰신 글 :
: : 배열을 사용해서 할려는게 아닌데요..ㅡㅡ;
: :
: : 포인터를 사용해서 배열처럼 사용하는건데..
: :
: : 그리고 포인터는 배열처럼 공간을 미리 할당안해되되는 장점이 있는걸루 아는데요..ㅡㅡ;
:
: 포인터는 미리 할당한 공간의 주소에만 의미가 있습니다.
: 프로그램에서 미리 할당하지 않은 공간의 주소를 액세스하면 절대로 안됩니다!
: 포인터에 대한 초보들의 흔한 실수죠. 주의하세요.
:
: 프로그램이 오동작을 하거나 이유없이 죽어버리는 경우 중에 제일 흔한 경우가 이런 경우입니다.
: 포인터가 할당한 공간외에 엉뚱한 주소를 액세스하는가를 항상 의심해야 합니다.
: 그래서, 이런 디버깅을 도와주는 전문 프로그램인
: Bounds Checker나 Code Guard(C++Builder에 포함되어 있습니다.)와 같은 프로그램은
: 그래서 있는 겁니다.
:

: : 먼자 잘못아신거 같네요..ㅡㅡ;
: :
: : : :
: : : : #include <stdio.h>
: : : : #include <conio.h>
: : : :
: : : : void main(void)
: : : : {
: : : : int inp, i = 0;
: : :   int inp[5], i; // 배열로 선언해서 미리 필요한 공간을 할당해야 합니다.
:
: 정적으로 배열을 선언할 수 없는 경우는
: malloc()함수나 new 연산자를 사용하여 동적으로 할당하면 됩니다.
:
:       int *in = (int*)malloc(5 * sizeof(int)); // C 방식
:       int *in = new int[5];                    // C++ 방식
:
: : : 그렇지 않으면 엉뚱한 메모리에 데이터를 쓰게 되므로 이상한 값이 출력되거나,
: : : 프로그램이나 시스템을 다운시킬 수 있습니다!
: : :
: : : : // int *in = &inp; 이 부분은 삭제하세요.
: : : : clrscr();
: : : : for(i=0;i<5;++i){
: : : : scanf("%d",(in+i) ); printf("\n : %d", *(in+i)); }
: 여기서 물론
:       scanf("%d", &in[i] ); printf("\n : %d", in[i]));
: 으로 써도 되는 건 아실테죠?
:
: 그리고 malloc()이나 new로 할당한 메모리는,
: 포인터 in을 사용한 블럭이 끝나기 전에
: free() 함수나 delete 연산자를 써서
: 할당한 메모리를 해제해야 합니다.
: (가능하면 더 이상 사용할 필요가 없을 때 바로 해제하세요.)
:
: 여기서 주의할 것은,
: malloc()으로 할당한 메모리는 free()로,
: new로 할당한 메모리는 delete로 해제해야 합니다.
: 틀리게 하면 안됩니다!
:
:       free(in);    // C 방식
:       delete[] in; // C++ 방식
:
: : : : getch();
: : : : }
: : :
: : : 앞으로 이런 종류의 질문은
: : : Turbo C/Borland C++ Q/A에 해주세요!

+ -

관련 글 리스트
19182 이 소스를 실행시키면 에러메세지가 뜨는데 왜 그런건지좀... 김대의 801 2002/06/08
30094     Re:이 소스를 실행시키면 에러메세지가 뜨는데 왜 그런건지좀... 유승철 887 2002/06/08
19192     Re:이 소스를 실행시키면 에러메세지가 뜨는데 왜 그런건지좀... 모라 773 2002/06/08
19195         Re:Re:헐..님글 보고 이제 알았네요..ㅜㅜ 지성합니다. 전 c++빌더인지 몰랐어요..c++에 다시올릴께요.. 김대의 802 2002/06/08
19184     배열 선언을 빼먹으셨네요. 김백일 822 2002/06/08
19185         Re:배열 선언을 빼먹으셨네요...-> 켁 ..이거 포인터로 사용하는건데요..ㅡㅡ; ... 김대의 835 2002/06/08
19188             Re:Re:케게겍! 님이야말로 잘못 알고 계시네요! 김백일 963 2002/06/08
19190                 Re:Re:Re:아 그리고 그 디버깅 전문 프로그램 사용법좀..아참 그리고 볼랜드c++이란 볼랜드 시빌더랑 다 김대의 846 2002/06/08
19189                 Re:Re:Re:제가 배운봐로는 제가 한프로그램은 주소할당이 되었는데요..ㅡㅡ; 김대의 810 2002/06/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.