NULL空ポインタデリファレンス
NULLポインタの参照解除
まず質問ですが、最初に関数(ポインタを含む関数)を使います.例えばsize_t fwrite(const void*ptr,size_t size,size_t nmemb,FILE*stream)は、いくつかの処理判断をしたことがありますか?あるなら下を見ないで、ないなら下を見てもいいですよ.個人的にはありません.しかし、私が最近出勤している間にいくつかのことを処理しているとき、このような関数を使うにはポインタをnullチェックする必要があることに気づきました.nullポインタをチェックして参照を解くように言ったのはなぜですか.
空のポインタ解リファレンスとは
C言語の空ポインタの値はnullであり、一般的にnullポインタはプロセスの最小アドレスを指し、通常この値は0である.空ポインタでデータにアクセスしようとすると、実行時のエラーが発生する.プログラムが空ではないが実際に空であることを望むポインタを参照しようとすると、空のポインタ解参照エラーが発生します.空のポインタのリファレンスを解除すると、プログラムが異常に終了したり、サービスが拒否されたりする可能性があります.たとえば、Linuxシステムで空のポインタにアクセスすると、segmentation faultのエラーが発生します.
危害を及ぼす
空のポインタデリファレンスは、C/C++プログラムで一般的なメモリ欠陥タイプです.ポインタが無効なアドレスを指し、参照されている場合.予期せぬエラーが発生し、メンターソフトウェアシステムがクラッシュする可能性があります.空のポインタリファレンスの欠陥は、システムのクラッシュ、サービスの拒否などの深刻な結果をもたらす可能性があります.
例を挙げる
に注意
空かどうかを検証するときは必ず効果を発揮し、早すぎたり遅すぎたりしないで、一般的に関数呼び出しの前に使用します.
本文は個人の見解で、もし誤って大物の指摘に感謝するならば、討論の学習を歓迎します.
まず質問ですが、最初に関数(ポインタを含む関数)を使います.例えばsize_t fwrite(const void*ptr,size_t size,size_t nmemb,FILE*stream)は、いくつかの処理判断をしたことがありますか?あるなら下を見ないで、ないなら下を見てもいいですよ.個人的にはありません.しかし、私が最近出勤している間にいくつかのことを処理しているとき、このような関数を使うにはポインタをnullチェックする必要があることに気づきました.nullポインタをチェックして参照を解くように言ったのはなぜですか.
空のポインタ解リファレンスとは
C言語の空ポインタの値はnullであり、一般的にnullポインタはプロセスの最小アドレスを指し、通常この値は0である.空ポインタでデータにアクセスしようとすると、実行時のエラーが発生する.プログラムが空ではないが実際に空であることを望むポインタを参照しようとすると、空のポインタ解参照エラーが発生します.空のポインタのリファレンスを解除すると、プログラムが異常に終了したり、サービスが拒否されたりする可能性があります.たとえば、Linuxシステムで空のポインタにアクセスすると、segmentation faultのエラーが発生します.
危害を及ぼす
空のポインタデリファレンスは、C/C++プログラムで一般的なメモリ欠陥タイプです.ポインタが無効なアドレスを指し、参照されている場合.予期せぬエラーが発生し、メンターソフトウェアシステムがクラッシュする可能性があります.空のポインタリファレンスの欠陥は、システムのクラッシュ、サービスの拒否などの深刻な結果をもたらす可能性があります.
例を挙げる
void test(int *p)
{
*p++;
printf("%d
",*p);
}
int main()
{
int *p=getvalue();
if(p==null) // ,
{
printf("error:p is null
");
}
test(p);//
}
に注意
空かどうかを検証するときは必ず効果を発揮し、早すぎたり遅すぎたりしないで、一般的に関数呼び出しの前に使用します.
本文は個人の見解で、もし誤って大物の指摘に感謝するならば、討論の学習を歓迎します.