2013-02-27 3 views
0

문을 해제해야합니다메모리 새로운 INT [10] 삭제 []

메모리 할당 새로운 INT [10] 삭제 []로 해제해야합니다.

그래서 ..

new int[10]; 

을 그리고 어떻게 삭제합니까? 편집

: 등, 내가 윌슨, 폴 생각 : 당신이 팀을 사람을 감사 맞아, 문은 일부 단어 따라서 저를 혼동 생략 - ... 단순히 내가했습니다

int * p = new int[10]; 

delete [] p; 

입니다 롭의 대답을 보지 못했지만, 나에게 정말 새로운 것처럼 보입니다! 모든 설명을 이해할 수있을 것이다 :

delete[] new int[10]; 
+0

당신은 그것을 삭제할 수 없습니다. – juanchopanza

+6

같은 스타일을 유지하려면'delete [] new int [10]; ' –

+0

'std :: vector '을 사용해야합니다. 나는 마지막으로 코드에서'delete' 또는'delete []'를 쓸 때를 기억하지 못합니다. – Naszta

답변

6

당신은 새로운에서 반환 된 값을 보유하는 변수를 놓치고있어. 당신이 메모리를 삭제할 때 변수를 통해 참조, 나중에 다음

int* intArray = new int[10]; 

: 당신은 뭔가를해야 당신이 그것을에는 핸들이 없기 때문에

delete[] intArray; 
1

그것을 말하는 것처럼 :.

int *foo = new int[10]; 
delete[] foo; 
+0

메모리 및 프로그램 종료를 삭제하지 않을 경우. 그러면 어떤 위험이있을 수 있습니까? (실행 시간에 메모리를 삭제하기 만하면됩니까?) – UnKnown

1
int * p = new int[10]; // allocate p 

// do stuff with p 

delete [] p;   // release p when you're done 
+0

메모리와 프로그램을 삭제하지 않으면 종료됩니다. 그러면 어떤 위험이있을 수 있습니까? 누군가는 우리에게 메모리와 프로그램 종료를 할당 해제하지 않으면 운영자 시스템이 재설치 될 때까지 해당 메모리를 사용할 수 없다고 말했습니다. – UnKnown

+0

대부분의 최신 운영 체제는 프로그램 종료시 남아있는 메모리 할당을 정리합니다.하지만 모든 동적 할당을 해제하는 것이 좋습니다. 메모리 누수를 쉽게 찾을 수 있으며 프로그램을 다시 설계하면 중요해질 수 있습니다. –

+0

정말로 삭제/삭제 메모리를 삭제합니까? – UnKnown

관련 문제