많은 오브젝트들에 의한 강제 초기화?

프로그래밍 일반에 관한 포럼입니다.

운영자: 류광

Locked
Yama
전체글: 11
가입일: 2008-09-17 18:17

많은 오브젝트들에 의한 강제 초기화?

전체글 글쓴이: Yama » 2009-09-09 15:19

문제사항을 검색하고 찾을려고 했으나 워낙 키워드를 멀로 해야할지 몰라서 글 한번 올립니다.

Dog라는 객체가 10000개가 있는 가정하에
모든 Dog객체(10000개)가 30cm간격으로 뼈를 찾습니다.

그리고 뼈를 찾아주는 인터페이스가 있는데 재귀의 함수로 구현하였습니다.

코드: 모두 선택


class Dog
{};
static int Bone = 100000;
bool RequestLength(Dog *dog, int addRange)
{
    if(addRange < 100000)
    {
	return RequestLength(dog, addRange + addRange);
    }

	return true;
}

void RequestFindStart(Dog *dog)
{
	int AddRange = 30;
	if(RequestLength(dog, AddRange + AddRange))
	 cout<<"찾았네"<<endl;
		
}

제가 문제전달의 의미를 전달하기위해 날코딩으로 작성한거구요.

위 상환에서 RequestLength(dog, addRange + addRange); 문에서 addRange + addRange를 전달하고 나면
RequestLength(Dog *dog, int addRange)에서는 addRange값이 0으로 타나나는 형상이 생깁니다.
그래서 무한 재귀로 들어가버리더군요.

이런상황은 어떻게 해석하고 해결해야될까요?
비슷한 경험이 있으신분 계신가요?

함께 고민할사람이 없어서 글한번 올립니다.

chadr
전체글: 980
가입일: 2003-06-01 12:28
사는 곳: 모대학
연락처:

전체글 글쓴이: chadr » 2009-09-09 15:30

의미 전달이라면 올리신 코드에는 특별한 문제는 없어 보이는군요. 원본 소스에 문제가 있을 것 같습니다. 원본을 올려주셔야지 알 수 있을것 같네요.

Yama
전체글: 11
가입일: 2008-09-17 18:17

글쓴이

전체글 글쓴이: Yama » 2009-09-09 15:37

해결했습니다.

int 형의 표현범위값 초과이더군요.
답변 감사합니다.^^


에궁 좀더 생각하고 올릴껄

사용자 아바타
Zeprod
전체글: 480
가입일: 2006-11-04 16:24
사는 곳: Creaty Networks
연락처:

전체글 글쓴이: Zeprod » 2009-09-09 15:47

AddRange + AddRange 자체가 0가 된거죠.

오브젝트가 많다고 강제 초기화 되는경우는 없습니다..; 변수가 할당 된것만 봐도 메모리 부족도 아니구요.


아 뒷북이네요(...)
세상이 기다리는 나만의 SHOW!
----------------------------------------------
Zeprod 홈 : http://Zeprod.org
Project. Creaty : http://Creaty.net/
Creaty 게임제작 커뮤니티 : http://Creaty.net/game/
----------------------------------------------

Locked

접속 중인 사용자

이 포럼을 보고 있는 사용자: 회원 0 명, 손님 0 명