[Defect Weekly] 第 31 号: 間違ったメモリ解放
1. 間違ったメモリ解放方法
C 言語の一般的なメモリ アプリケーション関数には、malloc()
、realloc()
、# などがあります。 ##calloc()、関数は異なりますが、すべて同じメモリ解放関数
free() に対応します。C でのメモリの適用と解放には、new/delete、new [] が使用されます。 /delete[]メソッド。 C言語であってもC言語であっても、ソースコードを記述する際には、メモリの利用方法の違いに応じてメモリの解放方法を選択し、間違ったメモリ解放を行わないようにする必要があります。例: C/C メモリ割り当て/解放の混合使用、またはスカラー メモリとベクトル メモリ割り当て/解放の混合使用。
2. 間違ったメモリ解放方法の害
メモリを間違って解放すると、プログラムに予期せぬ誤った動作が発生したり、プログラムがクラッシュしたりする可能性があります。 「Effective C (Second Edition)」の項目 5「対応する new と delete は同じ形式を採用する必要がある」は次のように指摘しています。「オブジェクト内の要素が誤って解放されると、オブジェクト全体、さらにはオブジェクト上のメモリ構造全体が破壊される可能性があります。」ヒープが損傷する可能性があります。破損し、メモリ リークやプログラムのクラッシュを引き起こします。」 これに関連する脆弱性情報も CVE データベースにあります。 2018 年 1 月から 2019 年 4 月までに、CVE データベースには合計 3 件の関連脆弱性情報がありました。脆弱性情報は次のとおりです。脆弱性の概要 | |
---|---|
CVE-2018-14948 | |
CVE-2018-14947 | |
CVE-2018-14946 |
3. サンプル コード
この例は、Samate Juliet Test Suite for C/C v1.3 (https:/) からのものです。 /samate.nist.gov/SARD/testsuite.php)、ソースファイル名: CWE762_Mismatched_Memory_Management_Routines__new_array_delete_char_01.cpp。
3.1 欠陥コード
上記のコード例では、31 行目は
new[] を使用して作成されています。オブジェクト配列は、34 行目の
delete を使用して解放されます。オブジェクト配列を解放するときに
new[]
delete[]
が存在します。メモリ解放方法が間違っている」問題。コードガードを使用して上記サンプルコードを検出すると、「メモリ解放方法が間違っている」不具合が検出でき、表示レベルは中程度です。図 1 に示すように:
図 1: 間違ったメモリ解放方法の検出例
3.2 修復コード
#上記の修復コードで、Samate によって指定された修復方法は次のとおりです。 31 行目の
new[]
を通じてオブジェクト配列を作成し、33 行目で次のコマンドを使用します。
を解除してください。これにより、間違ったメモリ解放方法が回避されます。
Code Guard を使用して修復されたコードを検出すると、「間違ったメモリ解放方法」の欠陥が存在しないことがわかります。図 2 に示すように:
図 2: 修復後の検出結果
4. 間違ったメモリ解放方法を回避する方法
間違ったメモリ解放方法を避けるためには、以下の点に注意する必要があります。
(1) メモリ解放の際は、メモリの適用方法を明確にし、プログラム構造が複雑にならないようにする結果として、間違ったリリース方法が使用されます。
###(2) ソース コードの静的解析ツールを使用すると、この種の問題を効果的に検出できます。 ###以上が[Defect Weekly] 第 31 号: 間違ったメモリ解放の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック








![[Defect Weekly] 第 31 号: 間違ったメモリ解放](https://img.php.cn/upload/article/000/887/227/168485445614044.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
1. メモリ解放方法が間違っている C言語の共通メモリアプリケーション関数にはmalloc()、realloc()、calloc()があり、それぞれ機能は異なりますが、いずれも同じメモリ解放関数free()に相当します。 C++ アプリケーションとリリースのメモリでは、new/delete、new[]/delete[] メソッドが採用されています。 C 言語または C++ 言語に関係なく、ソース コードを作成する際には、メモリの適用方法の違いに応じてメモリの解放方法を選択し、間違ったメモリの解放を使用しないようにする必要があります。例: C/C++ メモリ割り当て/解放の混合使用、またはスカラーとベクトル メモリ割り当て/解放の混合使用。 2. 間違ったメモリ解放方法の弊害 間違ったメモリ解放方法を使用すると、

推奨される PHP コード監査手法と実用的なツールの概要: インターネットの急速な発展に伴い、Web サイトのセキュリティ問題がますます顕著になってきています。インターネット開発で広く使用されている言語として、PHP のコード セキュリティ監査は非常に重要なリンクとなっています。この記事では、PHP コード監査の基本テクニックをいくつか紹介し、いくつかの実用的なツールを推奨します。 1. コード監査テクノロジは機密性の高い関数をスキャンします PHP コード監査では、最初に注意すべきことは機密性の高い関数の使用です。たとえば、 eval() 関数は渡されたコードを実行できます。

ネットワークセキュリティ意識の向上とハッカー攻撃手法の継続的な改良により、Webサイトのセキュリティ問題は企業や個人にとって避けられない問題となっています。この問題が特に深刻な時代では、PHP は人気のある Web 開発言語であり、PHP を使用して Web サイトを開発する企業や個人がますます増えています。 PHP Web サイトのセキュリティを確保するには、コード監査が不可欠です。コード監査とは何ですか?コード監査は、Web サイトのコードを分析してセキュリティの脆弱性を見つけるプロセスです。これは体系的かつ詳細な内容です

ソフトウェア コード監査に Python を使用する方法 ソフトウェア アプリケーションの急速な開発に伴い、コードの品質とセキュリティの問題にも注目が集まっています。コード監査は、コードの品質を評価およびチェックし、潜在的な脆弱性やセキュリティ上の問題を発見するプロセスです。 Python は、柔軟で機能が豊富なプログラミング言語として、コード監査の実践で広く使用されています。この記事では、ソフトウェア コードの監査に Python を使用する方法を簡単に紹介します。 1. コード監査の基本概念を理解する コード監査を実施する前に、まずコード監査の意味を理解する必要があります。

PHP 開発におけるコード監査と脆弱性修復の処理方法 インターネットの急速な発展に伴い、PHP は広く使用されているプログラミング言語として、Web サイトやアプリケーションの開発において重要な位置を占めています。ただし、オープン ソースの性質により、PHP コードはハッカーによって簡単に悪用され、セキュリティ上の脆弱性を引き起こす可能性もあります。 PHP 開発者にとって、コードの監査と脆弱性の修復は注意を払う必要がある問題です。この記事では、PHP 開発におけるコード監査と脆弱性修正の処理方法を、具体的なコード例とともに詳しく説明します。 1. コード監査コード監査

PHPのバックエンド機能開発におけるセキュリティ保護はどのように行うのでしょうか?インターネットの普及と関連技術の急速な発展に伴い、PHP はバックエンド開発言語として広く採用され、そのユーザーはますます増えています。ただし、その結果生じるセキュリティ上の問題は無視できません。ユーザーデータを保護し、悪意のある攻撃を防ぐために、開発者は PHP バックエンド関数開発のセキュリティに注意を払う必要があります。この記事では、PHP バックエンド関数開発における一般的なセキュリティ保護対策をいくつか紹介し、対応するコード例を示します。ユーザーの受信および処理時の入力検証とデータ フィルタリング

PHP は、Web 開発や動的な Web サイトの構築で広く使用されているサーバー側スクリプト言語です。しかし、インターネットの急速な発展とネットワーク セキュリティの脅威の増加に伴い、開発者にとってセキュリティの問題は徐々に重要になってきています。 PHP 開発では、セキュリティ コード監査テクノロジが重要な役割を果たします。この記事では、開発者がアプリケーションをより適切に保護できるように、PHP のセキュリティ コード監査テクノロジの分析について詳しく説明します。まず、セキュリティ コード監査とは何かを理解する必要があります。セキュリティ コードの監査とは、コードの完全なレビューを指します

ネットワーク技術の継続的な発展に伴い、さまざまなアプリケーションが徐々に生活に欠かせないものになってきました。 Web 開発で広く使用されているプログラミング言語として、PHP は多くのアプリケーションでも重要な役割を果たしています。ただし、PHP コードのセキュリティは見落とされ、無視されることがよくあります。ハッカーや攻撃者にとって、PHP アプリケーションは攻撃のターゲットとなるため、攻撃を防御および防止するには PHP コードの監査が必要です。 PHPコード監査とは何ですか? PHP コード監査とは、PHP コードをチェックすることを指します。
