【发布时间】:2012-05-30 13:28:10
【问题描述】:
这是我的程序的示例代码。在这里,我使用 std::auto_ptr 动态分配内存并输入值(在函数中),之后我再次为同一个变量分配内存。因此,当为相同的分配新内存时,是否会释放先前分配的内存。我对此表示怀疑,因为我使用的是 std::auto_ptr。提前致谢。
#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:不过,这是一个动态大小的
auto_ptr数组。或者,如果5不是硬编码常量,它会是。动态大小的数组不会以同样的方式破坏auto_ptr的目的。
标签: c++ memory-management dynamic auto-ptr