C で memset 関数を使用していますが、問題があります。これが私の問題です:
char* tail;
tail = //some memory address
int pbytes = 5;
次のようにmemsetを呼び出すと:
**memset(tail+pbytes, 0 , 8); // It gives no error**
次のようにmemsetを呼び出すと:
**memset(tail+pbytes, 0 , 9); // It goes into infinite loop**
次のようにmemsetを呼び出すと:
**memset(tail+pbytes, 0 , 10); // last parameter (10 or above). It gives Segmentation fault**
この理由は何ですか?プログラムが実行され、必要に応じて出力が得られますが、最終的にセグメンテーション違反が発生します。Linux 64 仮想マシンを使用しています。
どんな助けでも大歓迎です。
わかった。私がやっていることをもっと明確にしましょう。128 バイト (配列で 0-127) のデータを作成しています。112バイト目から119バイト目まで0(NULL)を書いた(うまくいく)のですが、120バイト目に0を書き込んで実行しようとすると無限ループに陥ってしまいます。120 バイト目に 1,2,4,6 と書くと、プログラムはうまく動きます。120 バイト目に他の数値を書き込むと、プログラムはセグメンテーション フォールトを返します。基本的に 120 から 127 のバイトに何か問題があります。