[c++] 動的メモリ割り当てに関する質問


2 Answers

あなたはそのメモリを初期化していません。 あなたはすでにそこにあったものを見ているだけです...

Question

ポインタを使用してヒープ上に動的メモリを割り当てると、

char *buffer_heap = new char[15];

次のようにメモリ内に表現されます。

 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««þþþ

なぜ終わりにNULL終了文字がないのですか?««««««««««««««««««« "




初期化された型を割り当てる場合にのみ初期化されます。 それ以外の場合は、意味のある値が必要な場合は、自分で書き込む必要があります。

一方、よりよい答えは、最初にこれを行うべきではないということです。 new[]が存在するのを忘れて、振り返ってはいけません。




すべてのCスタイルの文字列は一連の文字として表されますが、すべての文字列が文字列であるとは限りません。

\ 0は通常、文字列リテラルを直接代入したとき、またはそれを自分で追加したときに出力されます。 そして、\ 0を考慮に入れた関数を持つ文字列として配列を扱うだけで意味があります。

メモリを割り当てて初期化しないと、ランダムなものがいっぱいです。 そこには0があるかもしれませんし、そうでないかもしれません - あなたはそこに意味のあるものを次のステップに入れなければなりません。 そのことを文字列にするかどうかは、あなた次第です。




Related