読者です 読者をやめる 読者になる 読者になる

仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

C#で変数のアドレスを見たい

c#で普段はポインタとかを使わないので、覚え書きとして記録。

コンパイル時はunsafeオプションの指定が必要です。

using System;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace ConsoleApplication2
{
	class Class1
	{
		static void Main(string[] args) {
			System.Diagnostics.Process hProcess = System.Diagnostics.Process.GetCurrentProcess();

			Console.WriteLine("BaseAddress     :0x" + Convert.ToString(hProcess.MainModule.BaseAddress.ToInt64(),16));
			Console.WriteLine("EntryPoint      :0x" + Convert.ToString(hProcess.MainModule.EntryPointAddress.ToInt64(),16));
			Console.WriteLine("ModuleMemorySize:" + hProcess.MainModule.ModuleMemorySize);
			Console.WriteLine("WorkingSet      :" + hProcess.WorkingSet64);
			
			func();
		}
		
		static unsafe void func() {
			int a = 0x12345678;
			int *b = &a;
			
			Console.WriteLine("0x" + Convert.ToString((int)b,16));

			Console.Read();
		}
	}
}