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
[11346] Re:기초적인 문제인데...왜 빌더는 되고 vc는 안되져....ㅡ.ㅡ;;;
박지훈.임프 [cbuilder] 949 읽음    2001-09-22 04:14
임프랍니다.

좀 잘못 생각하신 것 같습니다.
기본적으로는, C/C++ 어플리케이션에서 할당되지 않은 포인터가 가리키는 메모리 번지에 값을 집어넣는
것은 유효한 코딩이고 많은 경우 의도적으로 사용되는 것입니다.

실제로 도스시절에는 텍스트를 화면에 더 빠르게 출력하기 위해 비디오 메모리에 직접 써넣는 방법을
썼는데, 그때 쓰던 방법이 far 포인터를 0xb800:0000이나 0xb000:0000로 잡아놓고 그냥 글자를 써갈기는
거였습니다. 그 외에도 다른 어플리케이션의 메모리 영역을 쓰거나 읽기 위해 volatile 변수를 잡아놓고
쓰기도 했습니다.

논리적인 에러라고 하셨는데... 위와 같이, 그런 코딩은 논리적인 에러일 수도 있고 의도적일 수도 있는
것입니다. 원래 C/C++은 시스템 프로그래밍을 위해 만들어졌으므로 그와 같은 동작을 코딩의 버그라고
잡으면 안됩니다.

Win32환경에서는 이것이 다릅니다. Win32에서 메모리를 관리하는 방식은 일일이 체크해서 할당되지 않은
메모리 영역을 억세스하는 경우엔 예외를 발생시킵니다. Win32에서는 모든 메모리 주소가 가상이므로
특정 메모리 번지라는 것이 의미가 없기에 가능한 것입니다.

비주얼C에서 메모리 참조 에러 창을 보셨다고 하셨는데.. 그게 부러우시면.. ^^
빌더에도 코드가드라는 멋진 디버깅을 도와주는 툴이 포함되어 있습니다.
프로젝트 옵션에서 코드가드 탭을 찾아서 체크를 표시해주고 다시 컴파일하면 말씀하신 것과 같이
코딩 실수일 가능성이 있는 코드를 실행시에 잡아줍니다.

그럼 이만...


구영모 님이 쓰신 글 :
: #include <stdio.h>
: #include <stdlib.h>
:
: void intalloc(int *ip)
: {
:         ip=(int *)malloc(sizeof(int));
: }
:
: int main(int argc, char* argv[])
: {
:         int *ip;
:
:         intalloc (ip);
:         *ip=5;
:         printf("%d\n", *ip);
:         free (ip);
:
:         return 0;
: }
:
: 다들 보면 아시겠지만 포인터 문제임다...
: 스택구조에 대해서 물어 보는 넘이 있어서 가르켜 주다가 알게된건데여...
:
: 위 예가 논리적인 에러가 있거든여...
: 제가 원래 스투디오를 써서 거기서 컴팔 하면 그 짱나는 메모리 참조 창이 떴었는데..
: 빌더는 당당하게 5라고 뜨데여...ㅡ.ㅡ;;
:
: 설명하는 넘한테 얼마나 무안하던지....ㅡ.ㅡ;;
: 이건 안되는거라고 설명했었는데..
:
: 사실 빌더는 인제 시작하는 단계라서 툴사용법도 잘 모르지만...
: 빌더는 논리적인 오류는 잡아주질 않나여?
: 사용자가 그런부분은 알아서 해야 되는건가여?
:
: 콘솔모드 설정이 문젠가...ㅡ.ㅡ
: 아무튼 고수님들 설명점 해주세여....
:

+ -

관련 글 리스트
11325 기초적인 문제인데...왜 빌더는 되고 vc는 안되져....ㅡ.ㅡ;;; 구영모 782 2001/09/21
11346     Re:기초적인 문제인데...왜 빌더는 되고 vc는 안되져....ㅡ.ㅡ;;; 박지훈.임프 949 2001/09/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.