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
[44220] memcmp 로 4 Byte 이하 길이의 배열을 비교 할 때 CodeGuard 에러 발생.
공부맨 [] 1250 읽음    2006-03-22 14:32
//---------------------------------------------------------------------------
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 에러 발생. 넘초보 1673 2006/03/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.