28

私はWin32apiATOMでこのタイプに遭遇しましたが、Acrobat API にもASAtomがあります。

私が知る限り、アトムはハッシュ テーブルのキーであり、通常は文字列で構成されており、アプリケーション間でデータをすばやく検索して共有できます。これは正しいですか、原子タイプの語源は何ですか?

編集

広範囲に検索した結果、 Prologはアトムを使用していることに気付きました。したがって、この単語には何らかの由来があるはずです。単一のデータを参照していたようです。

4

4 に答える 4

16

ATOM は、16 ビットの Windows ハンドルに似たプリミティブです。その値は、ユーザー モードに対して完全に不透明です。これはポインタでもインデックスでもありません。

typedef unsigned short ATOM;

于 2012-05-10T08:32:07.107 に答える
6

名前の語源については、古い Microsoft Win32 API のドキュメントで、「 A access to MemoryATOM 」などの頭字語であると見たことがあることを知っています。これは、システム内の内部データ構造を表す単純な数値識別子 (別の名前は「ハンドル」) に使用される用語です。

明らかな理由から、ユーザーにこれらの構造への直接ポインターを与えるのは賢明ではありません。1 つはカーネル空間に存在するため、もう 1 つはカプセル化に違反しているためです。ユーザーは、それに属していないメモリを解放したり、上書きしたり、その他の愚かなアイデアを実行したりできます。そのため、オペレーティング システムは単純に代わりの番号タグ (ATOM) を提供し、それを使用してシステムからデータを要求できます。また、ユーザーは、巨大なデータ構造全体ではなく、小さな数値を渡す方が高速です。ユーザーは、メモリ割り当てなどを気にする必要はありません。または、プログラムをクラッシュさせる可能性がある、無効になったポインターを介して一部のデータにアクセスする必要もありません。

于 2014-03-24T16:31:44.160 に答える
3

「atom」という用語について私が最初に見つけたものは、Lisp プログラミング言語 ( source ) のものです。しかし、元々は数理論理から来ているのだろう。プログラミングでは、それらはシンボルとも呼ばれ、最も単純な形式は名前整数です (C の列挙型がその例です)。ただし、これらは多くのプログラミング言語で広く使用されており、Win32 API および Acrobat API では、テーブル内の文字列の識別子です。

また、Mehrdadが指摘するように、ギリシャ語の元の意味は「分割できない」であるため、これ以上分解できないプリミティブ データ型を意味します。

于 2012-05-10T02:38:05.427 に答える