2011-10-09 13 views
1

char *配列を削除しますか? char * = new char[length];delete[] char;charポインタ配列を削除する

また、この練習ではstd::stringを使用できません。です。

私はこのエラーを取得しています:ここで

HEAP CORRUPTION DETECTED: after Normal block (#137) 0x00794B50.
CRT detected that the application wrote to memory after end of heap buffer.

は私のコードです:

class myClass 
{ 
    char * myString; 
    ... 
public: 
    myClass::myClass(const char * tempStr); 
}; 

myClass::myClass(const char * tempStr) 
{ 
    int length = strlen(tempStr); 
    myString = new char(length + 1); //+1 for null char 
    strcpy(myString, tempStr); 
    myString[length] = '\0'; 
    delete[] myString; //error occurs here 
} 

は今、私が知っている、このコードは完全に非現実的である、しかし、それはまだ私に同じエラーをスローします私たちはこれを解決することができれば解決しようとしています。私が読んだことから、これは問題ないはずですか?私は繰り返し述べますが、この練習ではstd::stringを使用できません。

答えて

7

あなたは大括弧を使いこなしました。それは以下のようになります。

myString = new char[length + 1]; 

大括弧は配列を作成します。通常の括弧は、1つのオペランドを取るコンストラクタで1つだけを割り当てます。

+0

ああ、私は自分自身が嫌いです。本当にありがとう、それはうまく答えとしてマークします。 – Jace

関連する問題