55 lines
766 B
C
55 lines
766 B
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1991 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
smartp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Safe pointer classes
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Anirudh Sahni (anirudhs) 21-Oct-1996
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode -Win32
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
21-Oct-1996 AnirudhS
|
||
|
Created.
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef SMARTP_H
|
||
|
#define SMARTP_H
|
||
|
|
||
|
//
|
||
|
// Template pointer class that automatically calls LocalFree when it goes
|
||
|
// out of scope
|
||
|
// T is a pointer type, like LPWSTR or LPVOID, that can be initialized to NULL
|
||
|
//
|
||
|
|
||
|
template <class T>
|
||
|
class CHeapPtr
|
||
|
{
|
||
|
public:
|
||
|
CHeapPtr() : _p(NULL) { }
|
||
|
~CHeapPtr() { LocalFree(_p); }
|
||
|
|
||
|
operator T() { return _p; }
|
||
|
T operator*() { return *_p; }
|
||
|
T * operator& () { return &_p; }
|
||
|
|
||
|
private:
|
||
|
T _p;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // def SMARTP_H
|