0

以下のコードは、何もない場合にメモリ リークを発生させます。Microsoft はこの点で的を射ていなかったと言っても過言ではありませんか?

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

template <typename T>
class class_leak
{
private:
    T *p_;

public:
    class_leak(T *p) :
        p_(p)
    {}

    ~class_leak()
    {
        delete p_;
    }
};

int main(int /*argc*/, char * /*argv*/[]) {
    int *x = new int(10);
    class_leak<int> cl(x);
    _CrtDumpMemoryLeaks();
}

製品:

Detected memory leaks!
Dumping objects ->
{56} normal block at 0x000D1540, 4 bytes long.
 Data: <    > 0A 00 00 00 
Object dump complete.
The program '[4584] unique_ptr.exe: Native' has exited with code 0 (0x0).
4

1 に答える 1