を生産、私はこれはおそらく、約1000回の話をされている基本的なものですけど、私は次のようにセグメンテーションフォールトを生成し、なぜ理解を助ける必要があると思う:C++のchar * [255]セグメンテーションフォールト
char* outputPath = new char[255];
sprintf(outputPath, "/home/istrab/iStrabGUI Output/%s/%s/0/Frames",patientName, techName);
いくつかの研究の後で、配列のサイズを255と宣言したため、私が書きたい文字列を保持するのに十分な大きさになると思います。私はまた、それを書き込もうとする前に初期化されていることを確認しました。また、関連する変数がコードの初期に初期化されているか、プログラムがそれまでに終了していたかどうかを二重に確認しました。これについて別の方法がありますか?それは文字列自体か、配列を初期化する方法ですか?
このコードは、C++
なぜ文字配列ではなく文字列オブジェクトを使用するのはなぜですか?あなたに頭痛の多くを救うでしょう。 – DeathTails
'char outputPath [255]'はより慣用的なIMOになります。また、使用する必要のある最大パス長の定数/定義があります(他に何もない場合は移植性のために) –
[ゼロの無限大ルール](https://en.wikipedia.org/wiki/Zero_one_infinity_rule)に既に違反しています。 – IInspectable