2020年11月10日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1649 count

【入門級】32bit環境か64bit環境か判定する

Written By: 川俣 晶連絡先

 現在プログラムが64bit OSで実行中であるか否かは、Environment.Is64BitOperatingSystemで簡単に判定できます。

 しかし、64bit OSでも32bitプロセスで実行してしまう可能性があります。

 プロセスが64bitか否かはEnvironment.Is64BitProcessで簡単に判定できます。

 これとは別にポインターのサイズが32bitから64bitか調べる方法もあります。IntPtr.Sizeの値が4なら32bit、8なら64bitです。

 ただ、プロセスが64bitならポインターも64bitという前提を置いても現状では問題ないので、あまり使う機会はないかもしれません。

罠の数々 §

  • 通常、【OSのビット数≠プロセスのビット数≠ポインターのビット数】となる。たとえば64bit OSで32bitのプロセスを実行することは普通だし、昔の8bit CPUならポインターは16bitである。しかし、煩雑なのでイコールと見なして運用することが多い。しかし、多いだけで必ずそうとも言い切れない。注意しておこう
  • 通常C#のプログラマーはポインターを意識する必要はない。しかし、ポインターのサイズは参照を保存するために必要なメモリサイズに直結するので、ポインターのサイズを意識することはメモリ節約につながる

参考リンク §

Environment.Is64BitOperatingSystem プロパティ

Environment.Is64BitProcess プロパティ

IntPtr.Size プロパティ

 上の2つはEnvironmentクラスなのに、最後の1つはIntPtrクラスである。なぜIntPtr.Size プロパティだけクラスが違うのだろうか。上記のリンクを辿って理由を考えてみよう。

リポジトリ §

https://github.com/autumn009/cshowto

Environment §

using System;

class Program

{

    static void Main()

    {

        bool is64bitOS = Environment.Is64BitOperatingSystem;

        bool is64bitProcess = Environment.Is64BitProcess;

        bool is64bitPointer = IntPtr.Size == 8;

        Console.WriteLine((is64bitOS? "64":"32")+"bit OSです。");

        Console.WriteLine((is64bitProcess ? "64" : "32") + "bit プロセスです。");

        Console.WriteLine((is64bitPointer ? "64" : "32") + "bit ポインターです。");

    }

}

実行結果 (実行する環境で変化する)

64bit OSです。

64bit プロセスです。

64bit ポインターです。

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
11月
11日
【入門級】C#9の目玉recordを使ってみる
3days 0 count
total 1211 count
【C# コーディング How To】の前のコンテンツ
2020年
11月
09日
【入門級】クエリの書き方は2つある
3days 0 count
total 1009 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20201110082711
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.