C言語のメモリ関連プログラミングスキルのまとめ

1. はじめに

この記事では、関連する開発者の参考のために、主に C 言語のメモリに関するプログラミング経験とスキルをメモリの割り当て、メモリの使用、メモリの解放の 3 つの部分に分けて紹介します。

2.体験概要コンテンツ

2.1 メモリの割り当て

2.1.1 モジュールメモリを割り当てるときは、8 バイトのアライメントを達成するのが最善です

異なるプラットフォーム上のメモリにアクセスする方が効率的であるためです。一部のプラットフォームでも、メモリが 8 バイトにアラインされていない場合、問題が発生する可能性があります。

2.2.2 カスタム malloc 関数を使用する

メモリを割り当てるときは、カスタム malloc 関数を使用し、メモリ割り当ての前後に 0x5A5A などのフラグ バイトを追加します。このようにして、このメモリのフラグ ビットが範囲外に変更された場合、いつ解放されるかを判断でき、エラーが報告されます。これ以上深刻な事故につながることはありません。

2.2 メモリの使用

2.2.1 メモリアドレスとオフセットを確認するシミュレーションデバッグ

アルゴリズムの各モジュールにメモリを割り当てた後、シミュレーション デバッグ中にメモリ アドレスと割り当てサイズを出力し、対応するアドレスとオフセットが正しいかどうかを計算して、メモリ オフセットと期待値の矛盾によって引き起こされるクラッシュの問題が発生しないことを確認します。

2.3 メモリの解放

2.3.1 メモリを解放した後はポインタが空である必要がある

メモリが解放された後も、ポインタが指す位置は元のメモリのアドレスのままですが、この時点では、対応するアドレスのメモリは使用できなくなります。したがって、ポインタを NULL に設定する必要があります。この利点は、次回ポインタを使用するときに、null 以外の判定が行われた場合はエラーが直接報告され、それ以外の場合はワイルド ポインタ アクセスが発生してクラッシュが発生することです。

3、まとめ

この記事は主に C 言語のメモリに関連するプログラミング スキルを紹介します。関連する開発者の参考のために継続的に更新されています。皆さんも一緒に議論し、交換することを歓迎します~

おすすめ

転載: blog.csdn.net/xuxu_123_/article/details/134988404