실행시 메모리 누수가 발생하여 클립 보드에서 읽으려고합니다.C++ MFC : CString에서 문자가 생성 될 때의 메모리 누수 *
샘플 코드 :
void SomeFunction()
{
OpenClipboard(nullptr);
HGLOBAL hglb = GetClipboardData(CF_TEXT);
char* ch = static_cast<char*>(GlobalLock(hglb));
CString rawClipboardData(ch);
GlobalUnlock(hglb);
CloseClipboard();
}
이것은 비주얼 스튜디오에 따른 메모리 누수가 발생하는 상기 중간 열이다. 이 행 :
실행하지 않으면 누수가보고되지 않습니다. 그러나 나는 그것을 실행하는 경우 I 얻을 Visual Studio를 출력 창에서 다음 디버그 출력 :
Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\strcore.cpp(158) : {75645} normal block at 0x00000000072C89A0, 52 bytes long.
Data: <`x > 60 78 F7 D3 FE 07 00 00 0D 00 00 00 0D 00 00 00
Object dump complete.
어떤 아이디어가?
업데이트 : 위 코드에서 OpenClipboard (nullptr)를 추가했습니다. 또한 실제 코드에는 nullptr-check가 있습니다. 보호 절 코드의 양을 줄이려면 여기를 깨끗하게 유지하십시오.
rawClipboardData 무엇을 작동하지 않으면
처럼 뭔가를 할 수 있어야한다? 그것은 표준으로 보이지 않습니다. – xaxxon
'CString'에서 문제가 발생했다면 동적 할당이 발생하는 곳을 확인하기 위해이 단계로 들어갔습니까? – George
@xaxxon rawClipboardData는 스택에서 단순히 생성자로 "ch"char 포인터를 보내는 CString 변수입니다. * – 10100111001