2016-09-06 23 views

答えて

8

documentationは言う:

あなたは、静的コード分析は、それがメモリを上書きしないことを証明することができないため、データ型または操作を使用していました。このようなコードはセキュリティリスクと考えることができます。

たとえば、メモリブロックに関連する型がないため、GetMemを使用するとこの警告が表示されます。

これらの警告を回避するために、実際には2つの方法があります:

  1. は警告を無効にします。
  2. 安全でないメモリアクセスを使用しないようにコードを変更します。

どちらのオプションも状況によっては便利です。たとえば、動的配列をサポートするEmbarcaderoのDelphi RTLコードを考えてみましょう。そのような安全でない操作を使用してメモリを割り当て、そのメモリにアクセスできる必要があります。そのような基本的なライブラリコードは、安全でない操作を使用できる必要があります。あなた自身のコードを考慮して、安全でないコードを実行する必要がある場合、それを単一のユニットまたはユニットの単一のセクションに分離し、そのコードの警告を無効にすることができます。

2番目の項目をオンにします。ポインタを使ってコードを置き換えることも可能です。たとえば、配列を使って書くことができるポインタ算術を使用するコードがあるとします。

私はこれらの警告がintroduced to help developers migrate code to the long since abandoned Delphi .net compilerであったと信じています。したがって、あなたが.netを対象としていないので、単にそれらの警告を無効にすることができるという見解を立てるかもしれません。一方で、警告を有効にし、潜在的に危険性の高いコードの領域に警告することが有用なシナリオを見ることができます。選択はあなた次第です。

+0

はい、この警告は.NETコンパイラの準備として導入されました。他のコンパイラは無視しても問題ありません。 –

+0

このようなコードを警告する場合は、安全に有効にしてください。どちらにしても。 –

5

これらの警告は、.NET互換性(および他の言語のIMNSHO)のみに適用されます。それらを無効にして忘れてください。

関連する問題