私は、主に C++ を使用し、c スタイルの文字列を使用する既存のコードを使用するプロジェクトに取り組んでいます。次のようにします。
#include <iostream>
int main(int argc, char *argv[])
{
char* myString = "this is a test";
myString = "this is a very very very very very very very very very very very long string";
cout << myString << endl;
return 0;
}
これはコンパイルされ、出力が長い文字列で正常に実行されます。
しかし、なぜそれが機能するのかわかりません。私の理解は、
char* myString
文字列リテラル「これはテストです」を保持するのに十分な大きさのメモリ領域へのポインタです。その場合、どうすればもっと長い文字列を同じ場所に保存できますか? 長い文字列を短い文字列用に取っておいたスペースに詰め込もうとしたため、これを行うとクラッシュすることが予想されました。
明らかに、ここで何が起こっているのかについての基本的な誤解があるので、これを理解する助けに感謝します.