開発 安全でないものは何ですか? -techopediaからの定義

安全でないものは何ですか? -techopediaからの定義

目次:

Anonim

定義-安全でないとはどういう意味ですか?

Unsafeは、.NET Frameworkの共通言語ランタイム(CLR)によって管理されないコードのセクション、またはアンマネージコードを示すために使用されるCプログラミング言語(C#)キーワードです。 Unsafeは、型またはメンバーの宣言、またはブロックコードの指定に使用されます。 メソッドの指定に使用する場合、メソッド全体のコンテキストは安全ではありません。


安全でないコードは、アンマネージアプリケーションプログラミングインターフェイス(API)またはシステムコールとの良好な相互運用性を提供し、パラメーターの受け渡しにポインターを必要とするサードパーティのダイナミックリンクライブラリ(DLL)の互換性のあるインターフェイスとして機能します。 プロセスの内容が検査または分析を必要とする場合、デバッグ中に安全でないコードが使用されることもあります。

TechopediaはUnsafeについて説明します

安全でないデータとは、Windowsのハンドルや新しいメソッドを介して割り当てられたポインターなど、CLRによって制御されない割り当てられたメモリデータを指します。


安全でないコードとは、アンマネージメモリにアクセスするステートメントまたはメソッドを指します。

  • Windows APIの呼び出し
  • ポインターまたはパフォーマンスが重要なコードを持つ構造を含むコンポーネントオブジェクトモデル(COM)メソッドインターフェイスコンポーネントの呼び出し。

安全でないコードは主に、操作にポインターが含まれる場合、および一般にコードがマネージコンテキスト外で実行される場合に使用されます。 安全でないコードのコンパイルには、コンパイルコマンドで「/ unsafe」オプションを指定する必要があります。


完全に信頼された環境では、安全でないコードの実行にはCLRが必要です。 ただし、CLRは安全でないコードを検証しません。 CLRは、アンマネージメモリコードへの直接アクセスを提供する安全でないコードをサポートします。これは、パフォーマンス上の理由から優先される場合があります。


CLRは型の安全性とセキュリティを維持するため、C#はC / C ++とは異なり、マネージコードでのポインター演算をサポートしません。 unsafeキーワードを使用すると、アンマネージコードでポインターを使用できます。 ただし、厳密なオブジェクトアクセス規則に従っていないため、安全性は保証されません。 たとえば、Java Runtime Environment(JRE)ではポインター操作機能は提供されていません。


安全でないコードは、固有の複雑な構文と、スタックオーバーフロー、システムメモリへのアクセスおよび上書きなどのメモリ関連エラーの可能性があるため、安定性とセキュリティの問題を引き起こす可能性があります。 潜在的なエラーやセキュリティリスクを回避するには、開発者の余分な注意が最も重要です。

この定義はC#のコンテキストで記述されました
安全でないものは何ですか? -techopediaからの定義