Is there any common algorithm to check the RAM memory of a device in terms of physical memory access errors? I thought that the simplest way is iteration over the whole memory and writing, reading and comparing each byte. Maybe is there any better way? How to allocate the whole accessible memory in .NET CF? I'm using newly designed Windows CE based device and I want to be sure that there will be no random memory errors during normal work.
You cannot do this while the memory is in use or occupied, and it would hardly be feasible doing it with a managed language (.NET CLR will move your objects around in memory, a process you cannot control, and you can't pin all objects of a project). Another downside of using .NET is that it hides memory from you and that it needs contiguous memory blocks for many of its datatypes.
Memory errors have another problem: depending on memory drivers, hardware and feature of the memory chips and/or motherboard, errors won't even show up because the memory chips will hide the wrong bits from the system.
But there's an easy workaround all this. There are many memory errorcheck programs around and Windows can do it for you too: it will then restart and check your memory at startup, before the OS kicks in. Most A-brands will have a memory check utility onboard that can go rather deep (i.e., all DELL computers have it in the system tools).
Trying to do this complex process yourself will be extremely hard, because the OS hides the physical memory locations and, as said in the first paragraph: you won't be able to access large parts of the memory, not even if you write a driver, simply because it is in use.