I mean, from what I understand an int(Int32) will go from -2,147,483,648 to 2,147,483,647. If I recall correctly, every program under windows on 32bits will behave as it has 2gb of ram, so I'd say i can put any address "inside" an int32. Is that true? Or should I stick to uint? I know uint is only for positive integers, and that all memory addresses are positive integers, but my question is more related to "does every memory address fit inside an int32?".
Thanks
edit: from MSDN i can see ReadProcessMemory ( http://msdn.microsoft.com/en-us/library/ms680553%28VS.85%29.aspx ) accepts a size_t argument for the base address. What maps a size_t in .net?
edit2: Ok, now I am kinda confused. Seems that to be 100% safe I should use uints instead of ints. So when using interop, I should using UIntPtrs instead of IntPtrs. But I see everywhere people using IntPtrs. Why is that? Does it have to do that all the things that we use usually are in the first 2gb of memory, so there is no problem in using standard ints?