Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
May 23, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Far pointers in VC 5-6.0

I was trying to do some direct memory stuff (writing to the DOS console buffer or a graphics screen) using my Visual C++ compiler. Unfortunately, the compiler is telling me that "far is an obsolete keyword." What is the solution to get to absolute memory addresses outside of the data segment? For example:

char far * videobuffer = 0xA0000000;

Sorry, in 32-bit Windows all addresses are protected and do not represent the location of physical memory. When you access data through a pointer, the processor looks up information on the current segment selector to determine exactly where the memory is located.

In addition, the designers of 32-bit Windows do not want your programs accessing any old address you want. It is this design that allows multiple programs to run at the same time without disturbing each other, even when one of those programs goes awry (at least, most of the time anyway).

Of course, it is possible. But it requires writing a device driver. I don't have all the details but only device drivers (I believe through special segment selectors) have the priviledge to access absolute memory addresses.

Once you are into Win32, you need to start looking for other ways to interact with the display.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date