많은 메모리 누수 문제가 있습니다.C++ CRT 메모리 누수
char *cmd = new char[128];
어떻게해야합니까 :
CRT 예를 들어 다음 코드 누출을 보여줍니다?
char *cmd = new char[128];
delete[] cmd;
위의 코드를 사용하여 VLD (Visual Leak Debugger)로 새 프로젝트를 시작했는데 여전히 누출되었다고합니다.
많은 메모리 누수 문제가 있습니다.C++ CRT 메모리 누수
char *cmd = new char[128];
어떻게해야합니까 :
CRT 예를 들어 다음 코드 누출을 보여줍니다?
char *cmd = new char[128];
delete[] cmd;
위의 코드를 사용하여 VLD (Visual Leak Debugger)로 새 프로젝트를 시작했는데 여전히 누출되었다고합니다.
기본적으로 메모리 사용을 중지하자마자 메모리를 해제해야합니다.
자동화를위한 좋은 C++ 기술은 RAII과 smart pointers입니다.
위키 백과 문서를 memory leaks에서도 생각해보십시오. 당신은 배열을 할 수 있습니다 메모리 누수를 방지하기 위해 delete[] arrayVariable;
하지 delete arrayVariable;
를 호출해야
누출 감지가 실행 된 후 개체가 삭제 될 수 있습니다. 정적 객체가있는 경우
는 예를 들어, 당신은 누수 탐지가 발생하기 전에 삭제가 이루어 지도록 삭제 순서에주의해야합니다.
함수에 새/삭제를 포함시키고 누수가보고되는지 확인하십시오. 그렇지 않으면 누수 탐지가 실행 된 후에 삭제되는 객체와 관련된 문제 일 수 있습니다.
사용 : 당신이 문자에 액세스해야 할 때마다
std::vector<char> cmd(128);
* 당신이 할 수있는 버퍼 : 메모리와 같은
char* memory = &char[0]
는 표준 : : 벡터 계속 될 보장됩니다. 개체가 메모리를 소유하고 있으므로 삭제할 필요가 없습니다. 이렇게하면 코드도 예외적으로 안전합니다. e, g, 삭제하기 전에 예외가 발생하는 경우 메모리가 누출되지 않습니다.
또한 C++ 11의 새로운 std :: array를 사용할 수도 있습니다 당신은 스택에 할당 할 수도 경우
물론 나는 모든 – Hakon89
후이 참조하면 호출''[] 삭제를 삭제 하시겠습니까? – EdChum
@keety 나는 delete [] * cmd라고 생각한다. –