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
[44247] Re:memcmp 로 4 Byte 이하 길이의 배열을 비교 할 때 CodeGuard 에러 발생.
넘초보 [mspower] 1672 읽음    2006-03-24 12:04
전 코드가드 참고만 합니다. 코드가드 자체에 에러가 있는듯 생각되어서요.

아래처럼 테스트 해보세요..전 에러가 나거든요.

파일->뉴->어플
컴파일 옵션에서 코드가드 선택
저장후 실행..

5.0 때부터 계속 되는 증상.....

BDS 는 아직 해보질 못해서... ^^


공부맨 님이 쓰신 글 :
: //---------------------------------------------------------------------------
: BYTE tmp[] = {0x01, 0x01, 0x01};
: //---------------------------------------------------------------------------
: void __fastcall TForm1::CheckData(BYTE *Data)
: {
:     if (0 == memcmp(Data, tmp, sizeof(tmp)))
:         ShowMessage("True");
:     else
:         ShowMessage("False");
: }
: //---------------------------------------------------------------------------
:
: 위와 같이 전역으로 선언되거나, static 키워드로 인해 전역적인 라이프 타임을 갖는 배열을
: memcmp 로 비교하는 루틴인데요.
: 오류 확인차 Code Guard 옵션을 키고 동작시키는 중에
: memcmp 에서 Access Overrun 이 발생한다고 나오네요. (BCB6, BDS2006)
:
: Access overrun in process: Project1.exe(3104)  - C:\소스 경로\Unit1.cpp#22
: Attempt to access 4 byte(s) at 0x004891C0, that is at block 0x004891C0(=Project1.exe:0x02:0001C0) which is only 3 bytes long.
:
: tmp 배열의 길이가 4 바이트 이상일 경우이거나 라이프 타임이 전역적이지 않을 경우에는 위 메시지가 뜨지 않네요.
: 현 프로그램에서 위와 비슷한 루틴(4Byte 미만 길이의 전역 배열 비교)이 종종 사용되는데 그냥 계속 사용해도 되는지 궁금합니다.

+ -

관련 글 리스트
44220 memcmp 로 4 Byte 이하 길이의 배열을 비교 할 때 CodeGuard 에러 발생. 공부맨 1250 2006/03/22
44247     Re:memcmp 로 4 Byte 이하 길이의 배열을 비교 할 때 CodeGuard 에러 발생. 넘초보 1672 2006/03/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.