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
[18866] Re:memcpy 에러나는데 뭐가 잘못된건가요...
하느리 [] 3225 읽음    2002-05-25 10:29
포인터 개념을 잘못 이해하고 계신 것 같습니다.
그리고, 하나의 new 연산자는 연속적인 메모리 공간을 할당하나, 여러개의 new로 동적할당한 메모리는 연속적인 메모리 공간을 할당 되지 않을 수도, 될 수도 있습니다. memcpy, memset, memcmp 등의 ANSI-C 함수는 연속적인 메모리 공간에 대한 처리 함수입니다. 따라서 당연히 에러가 납니다. 배열(정적 메모리 할당)의 경우에는 연속적인 메모리 공간을 할당 받습니다. 실제 할당된 메모리 공간도 잘못 계산 되었구...
// 아래 소스는 정확하지 않을 수 있습니다. 제가 해 본 게 아니라서... 그냥 참조만 하세요. 먼가 힌트를 발견하실 수 있을 것입니다.

Test = new (AA*) [N];
for ( int i = 0; i < N; i++ )
{
    Test [i] = new AA [M];
}

for ( int i = 0; i < N; i++ )
{
    memset (Test+i, 0, sizeof (AA)*M);
// 또는    memset (Test+i, 0, sizeof (Test[i]));
}


// N이 100이라고 가정함

최흥배 님이 쓰신 글 :
: memcpy 사용하는데 에러가 나오는데 잘 모르겟네요..
: 에러 내용이 메모리 침범 인것 같은데.. 코드는 다음과 같급니다.
:
: struct aa
: {
:    int a;
:    int b;
: }AA;
:
:
: ......
:
: struct AA **Test;
: .....
:
: Test = new AA*[N];
: for(int i=0; i<N;++i)
: {
:   Test[i] = new AA[M];
: }
:
: .....
:
: memcpy(Test,0,N*M); // Test를 0 으로 초기화 시킴.
: 대충 이렇는데 memcpy부분에서 에러가 나네요..
:
: 좀 가르쳐주세요...
:
:
:

+ -

관련 글 리스트
18865 memcpy 에러나는데 뭐가 잘못된건가요... 최흥배 1030 2002/05/25
18870     Re:memcpy 에러나는데 뭐가 잘못된건가요... 똘똘이 1657 2002/05/25
18866     Re:memcpy 에러나는데 뭐가 잘못된건가요... 하느리 3225 2002/05/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.