いつものように、ポインターの問題。文字配列用の非常に単純な「暗号化/復号化」関数を作成しようとしています。はい、文字列を使用できることはわかっていますが、ポインターに関する知識を向上させ、単純なバイトを使用して単純なタスクを達成したいと考えています。そこで、次のような単純な構造体を作成しました。
struct text {
char* value;
int size;
}
そして、この単純な関数を作成しました:
text encrypt(text decrypted) {
char key = 'X';
for (int i=0; i<decrypted.size; i++) {
decrypted.value[i] = decrypted.value[i] ^ (key + i) % 255);
}
return decrypted;
}
この時点で、経験豊富な C++ プログラマーなら問題を発見できるはずです。とにかく、私はこの関数を次のように呼び出します:
...
text mytext;
mytext.value = new char[5];
mytext.value = "Hello";
mytext.size = 5;
mytext = encrypt(mytext);
...
いつものように、「セグメンテーション違反 (コア ダンプ)」エラーが発生します。これは Linux であり、もちろん g++ です。また、私は何をしましたか?ありがとう!