나는 실행할 때마다 0.5 MB의 메모리를 사용하는 함수를 가지고있다. 그래서 나는 동시에 Windows 작업 관리자를 보면서 단계별로 조사하기로 결정했습니다. 나는이 줄 뒤에 나타났습니다 :delete []는 C++에서 실제로 작동합니까?
int **banned;
banned=new int*[vertices];
for(i=0;i<vertices;i++)
banned[i]=new int[k_colors];
0,5 MB 메모리를 사용합니다. 그럼 난 return
라인 전에 삭제하기로 결정
for(i=0;i<vertices;i++)
for(j=0;j<k_colors;j++)
delete []banned[j];
delete[]banned;
은 함수의 시작을 사용하여 8,5 MB 메모리이었다. 할당 후 9MB가되었지만 삭제 부분 이후에는 여전히 9MB였습니다. 그리고 전체 프로그램에서이 기능을 1000 번 실행합니다. 그런 다음 OS에 의해 죽게됩니다. 어떤 아이디어가 그 이유이며 어떻게 해결할 수 있습니까?
편집 : 여기에 main()
부분 : 위
int main()
{
srand(time(0));
input();
initialize();
for(int i = 0; i < MAX_GENERATION; i++)
{
parents = selection(TS);
population = cross_over(parents, PC);
mutation(PM);
elite=tabu_search(population);
elitism(); //270 MB memory using each time.
}
fclose(pFile);
return 0;
}
, elitism()
함수의 첫 줄은 할당 부분, 그리고 마지막 라인은 delete
부분입니다.
'delete []'는 메모리를 OS_로 되 돌리지 않습니다. –
좋아, 그럼 어떻게 할 수 있니? –
OS가 제공하는 제품에 따라 다릅니다. 그러나 나는 적절한 방법이 있는지 의심 스럽다. –