Hi All
I have a structure pointer and setting that pointer as NULL. When i tried to access the elements in the structure i am getting the error message.
"Cannot access memory at address 0x8". This i tried in LINUX.
When the same program is tried thro UNIX (HP-UX), i am not getting the message instead the null value "\0" is printed.
Can any of you tell me why it is so and if possible what is the necessary action that needs to be taken in LInux to avoid that error message.
I have the following program
According to the language definition, the behaviour is undefined if you do this, so that's why you have different behaviour on different platforms.
In order to make your code run correctly, you need to either remove the lines
I understood what you said, but it works in HP-UX. As the value in the members are filled with 0's, while in Linux (64 bit)
uname -a
Linux optiplex64 2.6.9-55.0.2.ELsmp #1 SMP Tue Jun 26 14:14:47 EDT 2007 x86_64
it is not working.
One more point is that in another linux box (32 bit )
<lnx22:~>$ uname -a
Linux 2.4.21-37.ELsmp #1 SMP Wed Sep 7 13:28:55 EDT 2005 i686 i686 i386 GNU/Linux
it works.
So ... i am looking for a suitable solution where the same code should work in both in LInux and HP-UX.
Working/not working depends on implementation of kernel.
Basically how particular kernel deals with memory.
Sometimes it might allow you to read whatever your want, or might not.
For example in case of DOS you call is always valid, becuase iterrupts vector area is located in that area.
At the same time it's big security flaw if any procees is allowed to read any piece of memory. It might be a way to easily obtaint passwords, decription keys, etc. That's one of the reasosn, why you have such exception.
Your program is wrong regardless if it's HP-UX or Linux. It does that you didn't intend to do. You must rewrtie in order to avoid defrefencing of tha null-pointer.