は、私は、名前空間ECFS
その中にインライン関数を持っている、と私は、次があります。書き込み時にSIGSEGVセグメンテーションフォルトが発生しますが、読み込みませんか?
inline void changeData(char* data, uint32_t len) {
for (; len != 0; --len, --curpos) {
std::cout << data[len] << std::endl;
data[len] = 'C';
}
}
読み取りは絶対にうまく動作しますが、書き込みは、セグメンテーションフォルトが発生します。私はデータを割り当てて、len
が範囲外ではないことを確認しました。何が起きているのかわかりません。
編集:私はそれを呼び出すために使用している行は、次のとおりです。
char* str = new char[13];
str = "Hello world!";
ECFS::changeData(str, 12); // SIGSEGV
私たちにどのように呼びかけているかを教えてください。私はあなたが定数へのポインタを渡している$ 1,000を賭けるでしょう。 –
参考: 'len'をインデックスとして使用する場合、インデックスは配列サイズ-1を通して0であることを考慮していません。呼び出し元はそれを考慮していますが、良いコーディング練習のためには、それをあなたの命名/使用法に示すことが助けになります。 – donjuedo
@donjuedoとにかくwhileループ(正しいインデックス:P)に変更するつもりだったのですが、チップに感謝します。 – TheAbelo2