は、なぜこれが動作しません:strcpyのは、割り当てられた文字列をコピーしません
SomeClass::SomeClass(char *lit) //Ctor
{
str = new char[strlen(lit)+1]; // str is a pointer to char in SomeClass
strcpy(str,"have");
cout << str << " " << "In Ctor" << " +Size=" << strlen(str)<< endl;
}
上記のコードは長さが0の文字列を示します。しかし、このコードは動作します:
SomeClass::SomeClass(char *lit)
{
char newstr[strlen(lit)+1];
strcpy(newstr,"have");
cout << newstr << " " << "In Ctor" << " +Size=" << strlen(newstr)<< endl;
}
Hereがあります完全なコード
EDIT:
私は質問に答えた後、OPを削除したIdeoneへのリンクを追加しました。
ソースコードへのリンクがなければ、このQ &の答えは役に立たない。
あなたが見ているエラーを示しています**完全**、**短い**プログラムを作成してください。詳細はhttp://sscce.orgを参照してください。 –
どちらの場合も、渡された文字列 'lit'の長さに配列のサイズを変更します。 'lit'は少なくとも4文字長であることを保証するものは何ですか? –
@amit:標準では許可されていませんが、その機能を提供するコンパイラ拡張があります。 –