C / C ++はstrcpy関数を使用してエラーを報告します: 'XXXに未処理の例外があります:0xC0000005:ロケーション0x00000000への書き込み中にアクセス違反が発生しました'
C C Uses Strcpy Function Report An Error
Strcpyは、C言語の標準ライブラリ関数です。その機能は、「 0」ターミネータを含む文字列を別のアドレス空間にコピーすることです。戻り値はchar *型です。そのプロトタイプ宣言:char * strcpy(char * dest、const char * src)ただし、strcpy関数を使用する場合、destのパラメーターとしてもパラメーターとしても、引数としてnullポインターを使用できないことに注意する必要があります。 srcの場合、それ以外の場合はエラーが報告されます: 'XXXに未処理の例外があります:0xC0000005:場所0x00000000への書き込み中にアクセス違反が発生しました。'
例1:nullポインターをdestのパラメーターとして使用することはできません
次のコードがあります。
#include #include int main() { char str[20] = { 0 } strcpy(NULL, 'hello world') printf('str:%s
',str) return 0 }
コンパイルして実行すると、以下に示すように、プログラムがエラーを報告していることがわかります。
例2:srcのパラメーターとしてnullポインターを使用することはできません
次のコードがあります。
#include #include int main() { char str[20] = { 0 } strcpy(str, NULL) printf('str:%s
',str) return 0 }
コンパイルして実行すると、以下に示すように、プログラムがエラーを報告していることがわかります。
上記の2つの例は、strcpy関数への引数としてnullポインターを使用できないことを証明しています。