이것은 내 프로그램의 샘플 코드입니다. 여기에 나는 동적으로 메모리를 할당하는 std :: auto_ptr을 사용하고 같은 변수에 대한 할당 메모리를 다시 할당 한 후에 함수에 값을 입력한다. 그래서 이전에 할당 된 메모리는 같은 메모리에 새로운 메모리가 할당 될 때 할당 해제됩니다. 나는 std :: auto_ptr을 사용하고 있기 때문에 이에 대해 의심 스럽다. 미리 감사드립니다.auto_ptr에 대한 동적 메모리 할당
std::auto_ptr<HANDLE> *eventHandle;
여기
#include "stdafx.h"
#include <iostream>
#include <memory>
#include <windows.h>
std::auto_ptr<HANDLE> *eventHandle;
void function()
{
eventHandle = new std::auto_ptr<HANDLE>[5];
std::auto_ptr<HANDLE> handle(new HANDLE);
*handle = CreateEvent(NULL, false, false, NULL);
eventHandle[0] = handle;
}
void f2()
{
if(NULL == eventHandle)
{
std::cout<<" HANDLE NULL";
}
}
int _tmain(int argc, _TCHAR* argv[])
{
function();
f2();
function();
return 0;
}
'new std :: auto_ptr'을 쓰면 auto_ptr의 목적을 무효화합니다. – Pubby
@Pubby : 이것은 동적 크기의'auto_ptr' 배열입니다. 또는 '5'가 하드 코딩 된 상수가 아닌 경우입니다. 동적 크기의 배열은 같은 방식으로'auto_ptr'의 목적을 무효화하지 않습니다. –