|
分類:[C/C++]
初歩の質問で大変申し訳ないのですが、どうしてもよくわからないので質問させていただきます。 C++でのnew演算子の使用に対しての質問です。 パターン1でもnewで連続してメモリ確保を行っているので、パターン2でも問題ないのではと思って ためしてみたのですがパターン1は問題ないのですがパターン2では異常終了してしまいます。 この違いは一体なんななのでしょうか? それと、そもそもnewを連続して使用するのは可能なのでしょうか?
// パターン1 int main( int argc, char *argv ) { char *str = "This is a test\n"; char *temp = new char('\0'); temp = new char[strlen(str)+1]; strcpy( temp, str ); cout << temp;
delete[] temp; } // パターン2 int main( int argc, char *argv ) { char *str1 = "This is a test "; char *str2 = "C++ Programing\n" char *temp = new char[strlen(str)+1];
strcpy( temp, str1 ); temp = new char[strlen(str2)+1]; strcat( temp, str2 ); cout << temp;
delete[] temp; }
|