C++ Checking if param dynamic array. Is it necessary?
<pre><code>void Example1( char* ArrayA, unsigned int Length )
{
    if( ArrayA == 0 )
    {
        ArrayA = new char[ Length + 1 ];
        // Fill it with 2 - whatever
        ::memset( ArrayA, 0x02, sizeof( char ) * Length );
        ArrayA[ Length ] = '0\n';
    }
    // Do whatever with ArrayA

    // Clean-Up
    // Error occurs
    delete [ ] ArrayA;
};

void Example2( char* ArrayB, unsigned int Length )
{
    bool IsDynamic = false;
    if( ArrayB == 0 )
    {
        ArrayB = new char[ Length + 1 ];
        // Fill it with 2 - whatever
        ::memset( ArrayB, 0x02, sizeof( char ) * Length );
        ArrayB[ Length ] = '0\n';
        IsDynamic = true;
    }
    // Do whatever with ArrayA

    // Clean-Up
    // Have to check...
    if( IsDynamic )
        delete [ ] ArrayB;
};


int main( void )
{
    Example1( "\x01\x02\0x03", 3 ); // Example1 WILL NOT* declare ArrayA as a dynamic array - ERROR (caused by deleting non dynamic array)

    Example2( 0, 3 ); // ArrayB will be a dynamic array - OK
    Example1( 0, 3 ); // OK

    Example2( "\x04\x05\0x06", 3 ); // ArrayB isn't a dynamic array - OK

    return ( 0 );
};
</code></pre>

<p>The problem occurs when attempting to delete char* ArrayA in function Example1 because ArrayA is not a dynamic array. It will only be a dynamic array if it is equal to zero/null. So, to resolve that I created a similar function - Example2. The only difference is that Example2 has a boolean that checks to see if char* ArrayB is a dynamic array or not.</p>

<p>I know what I am doing is either incorrect or "noobish". So please help me. I will learn from my mistake.</p>

<p>How would you do it?</p>

<pre><code>void Example3( char* ArrayC, unsigned int Length );
</code></pre>
