연습을 위해 간단한 콘솔 Yahtzee 게임을 작성하기 시작했습니다. 이 함수가 메모리를 누설할지 여부와 관련하여 질문이 있습니다. 롤 기능은 오이스가 다시 롤 포일되어야 할 때마다 호출됩니다.C++이이 함수를 유출합니까?
동적 배열을 만드는 것입니다. 처음에는 5 개의 무작위 값을 저장합니다. 다음 실행을 위해 유지하려는 주사위를 제외한 모든 주사위를 다시 굴립니다. 나는 그 또 다른 기능을 가지고 있지만,이 문제와 관련이 없습니다 때문에 내가
주요 기능
int *kast = NULL; //rolled dice
int *keep_dice = NULL; //which dice to re-roll or keep
kast = roll(kast, keep_dice);
delete[] kast;
그것을 왼쪽으로 여기에 기능
int *roll(int *dice, int *keep) {
srand((unsigned)time(0));
int *arr = new int[DICE];
if(!dice)
{
for(int i=0;i<DICE;i++)
{
arr[i] = (rand()%6)+1;
cout << arr[i] << " ";
}
}
else
{
for(int i=0;i<DICE;i++)
{
if(!keep[i])
{
dice[i] = (rand()%6)+1;
cout << "Change ";
}
else
{
keep[i] = 0;
cout << "Keep ";
}
}
cout << endl;
delete[] arr;
arr = NULL;
arr = dice;
}
return arr;
}
포인터를 삭제 한 후 포인터에 항상 NULL을 할당하라는 메시지가 표시 되었습니까? 그들은 틀렸다. –
'arr = NULL; arr = 주사위;'다소 중복. :] 첫 번째 수준의 최적화만으로 빌드하면 해당 행은 컴파일 된 출력에 존재하지 않습니다. ('arr = NULL;') – GManNickG
@ 스티브 : 나는 책에 대해 읽은 것을 기억한다. 무엇이 잘못 되었습니까? 나는 안전을 위해서라고 생각했다. – jasonline