Why might the following hang the program?
<p>Now that I've got SmartPointers, I decided to try DumbPointers, which do the terribly difficult job of calling "delete" in a destructor. Deciding to continue my tests of storing arrays in SmartPointer, using a DumbPointer, I recalled a previous error and tried this:  </p>

<pre><code>DumbPointer&lt;char&gt; dumbPointer = "Hello World\0";  
</code></pre>

<p>For undefined reasons of "Perhaps that's not a pointer or proper pointer?", it causes the program to hang. Naturally, I'd like to know why, with an eye toward solving said problem. I will now provide the terribly complex DumbPointer code (maybe I should go to sleep) below: (Let me re-assure you: The destructor is called)  </p>

<pre><code>#pragma once

#include "stdafx.h"

template &lt;typename T&gt; class DumbPointer
{
private:
T* myPtr;

public:
T* Value() { return myPtr; }

DumbPointer(const DumbPointer&lt;T&gt;&amp; a)
 { throw new "No assignments between DumbPointer."; }
DumbPointer(T* ptr) { myPtr = ptr; }
DumbPointer(T value) { myPtr = &amp;value; }
~DumbPointer() { delete myPtr; }


operator T*() { return myPtr; }
T* operator -&gt;() { return myPtr; }
};
</code></pre>
