Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > NULL Pointer Dereference

Reply
Thread Tools

NULL Pointer Dereference

 
 
Denis Palmeiro
Guest
Posts: n/a
 
      07-08-2003
Hello eveyone.

What exactly is a NULL Pointer Dereference? I tried searching google but
the only results that returned were bug reports. Some example code, if
possible, would also be appreciated.

Thanks in advance.


-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 80,000 Newsgroups - 16 Different Servers! =-----
 
Reply With Quote
 
 
 
 
Jun Woong
Guest
Posts: n/a
 
      07-08-2003

"Denis Palmeiro" <(E-Mail Removed)> wrote in message news(E-Mail Removed)...
> Hello eveyone.
>
> What exactly is a NULL Pointer Dereference? I tried searching google but
> the only results that returned were bug reports. Some example code, if
> possible, would also be appreciated.
>


int *p = 0;
*p; // dereferencing a null pointer


--
Jun, Woong ((E-Mail Removed))
Dept. of Physics, Univ. of Seoul



 
Reply With Quote
 
 
 
 
sumit.sharma@wipro.com
Guest
Posts: n/a
 
      07-08-2003
Yes, that's how we dereferenc pointer. Dereferencing them, yields tha
actual data they point to.

Generally, NULL is considered to be a error condition. Like the
pointer is not pointing anywhere.

To declare NULL pointer use,

int * intPtr = (int *) NULL; /* NULL is defined as 0 */

Dereferncing NULL pointer may cause illegal operation...I am not sure

sumit

"Jun Woong" <(E-Mail Removed)> wrote in message news:<bedhmv$mjm$(E-Mail Removed)>...
> "Denis Palmeiro" <(E-Mail Removed)> wrote in message news(E-Mail Removed)...
> > Hello eveyone.
> >
> > What exactly is a NULL Pointer Dereference? I tried searching google but
> > the only results that returned were bug reports. Some example code, if
> > possible, would also be appreciated.
> >

>
> int *p = 0;
> *p; // dereferencing a null pointer

 
Reply With Quote
 
Robert W Hand
Guest
Posts: n/a
 
      07-08-2003
On 8 Jul 2003 07:13:19 -0700, http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

>Yes, that's how we dereferenc pointer. Dereferencing them, yields tha
>actual data they point to.
>
>Generally, NULL is considered to be a error condition. Like the
>pointer is not pointing anywhere.
>
>To declare NULL pointer use,
>
>int * intPtr = (int *) NULL; /* NULL is defined as 0 */
>
>Dereferncing NULL pointer may cause illegal operation...I am not sure
>
>sumit


Please do not top post. I actually thought that Jun's post was a
correct answer. Your post has some odd constructions. For example,
you do not need to cast NULL explicitly.

NULL is a macro defined in stddef.h. to be the null pointer constant.
A null pointer constant is an integer constant expression with the
value 0 or such an expression casted to void*. A null pointer
constant converted to a pointer type is called a null pointer.

#include <stddef.h>

int* ip = NULL;
*ip; // undefined behavior

would be sufficient. The problem with derefencing a null pointer is
that it invokes undefined behavior. It is impossible to know how any
particular implementation will handle it.

Best wishes,

Bob
 
Reply With Quote
 
prashna
Guest
Posts: n/a
 
      07-09-2003
If the pointer is not initialised expicitly, does'nt it get
initialised to NULL by default.I have written the following program
which shows that by default any pointer will be intialised to
NULL.Have a look at the program.

#include <stdio.h>

int main()
{
int *p;
if (p ==NULL)
printf("pointer is null %p\n",p);
else
printf("pointer is not null\n");

}

and here is the output,
$ cc dereference_null.c
$ ./a.out
pointer is null 0

or does it depends on the system that is being used?I executed this
program on AIX.
 
Reply With Quote
 
Mr. 4X
Guest
Posts: n/a
 
      07-10-2003
Denis Palmeiro <(E-Mail Removed)> wrote:

> Hello eveyone.
>
> What exactly is a NULL Pointer Dereference? I tried searching google but
> the only results that returned were bug reports.


No wonder - dereferencing a NULL po9inter *is* usually a bug. If you try to
READ the stuff to which the null pointer points then you may get away with
garbage values, but protected mode OSes will stop the program ('segfault').
If you WRITE to it, then either the OS catches the attempt, or you have
good chances of locking up the machine.

> Some example code, if
> possible, would also be appreciated.
>
> Thanks in advance.
>
>
> -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
> http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
> -----== Over 80,000 Newsgroups - 16 Different Servers! =-----
>


 
Reply With Quote
 
Micah Cowan
Guest
Posts: n/a
 
      07-11-2003
(E-Mail Removed) (prashna) writes:

> If the pointer is not initialised expicitly, does'nt it get
> initialised to NULL by default.


NO. The only time this will happen without an explicit initializer is
when it is statically allocated.

> I have written the following program
> which shows that by default any pointer will be intialised to
> NULL.Have a look at the program.
>
> #include <stdio.h>
>
> int main()
> {
> int *p;
> if (p ==NULL)
> printf("pointer is null %p\n",p);
> else
> printf("pointer is not null\n");
>
> }
>
> and here is the output,
> $ cc dereference_null.c
> $ ./a.out
> pointer is null 0
>
> or does it depends on the system that is being used?I executed this
> program on AIX.


You were simply unlucky.

-Micah
 
Reply With Quote
 
sumit.sharma@wipro.com
Guest
Posts: n/a
 
      07-14-2003
Hi,

I know that NULL is defined as 0. But there are chances that compiler
may generate warnings (invalid pointer assignments) when you do this
--

int * iPtr = NULL; /* maybe illegal */

So to be on SAFE side, I had typecasted it to int *, so to avoid
any compiler warnings...if it is INTELLIGENT.

So you are just complementing my answer abt de referencing NULL
pointer

> Please do not top post. I actually thought that Jun's post was a
> correct answer. Your post has some odd constructions. For example,
> you do not need to cast NULL explicitly.
>
> NULL is a macro defined in stddef.h. to be the null pointer constant.
> A null pointer constant is an integer constant expression with the
> value 0 or such an expression casted to void*. A null pointer
> constant converted to a pointer type is called a null pointer.
>
> #include <stddef.h>
>
> int* ip = NULL;
> *ip; // undefined behavior
>
> would be sufficient. The problem with derefencing a null pointer is
> that it invokes undefined behavior. It is impossible to know how any
> particular implementation will handle it.
>
> Best wishes,
>
> Bob

 
Reply With Quote
 
Ben Pfaff
Guest
Posts: n/a
 
      07-14-2003
(E-Mail Removed) writes:

> I know that NULL is defined as 0.


It may also be defined as ((void *) 0) or other variations as
well.

> But there are chances that compiler may generate warnings
> (invalid pointer assignments) when you do this --
>
> int * iPtr = NULL; /* maybe illegal */


That's not ever illegal (and not invalid unless you failed to
define NULL by including an appropriate header). It is perfectly
fine as specified by the language definition.

> So to be on SAFE side, I had typecasted it to int *, so to avoid
> any compiler warnings...if it is INTELLIGENT.


I'd be very surprised to have a compiler complain about the
above, but compilers are allowed to warn about anything.
--
"To get the best out of this book, I strongly recommend that you read it."
--Richard Heathfield
 
Reply With Quote
 
Mark McIntyre
Guest
Posts: n/a
 
      07-14-2003
On 14 Jul 2003 10:47:49 -0700, in comp.lang.c , (E-Mail Removed)
wrote:

>Hi,

please don't top post. Your response should go BELOW the text it
relates to.

>I know that NULL is defined as 0. But there are chances that compiler
>may generate warnings (invalid pointer assignments) when you do this
>--


don't put two dashes and a space in the middle of your post. That
separates a sig from the body, and causes all good newsreaders to snip
all the text below. I had to force Agent to include it.

>int * iPtr = NULL; /* maybe illegal */


thats never illegal in declaration.

>So to be on SAFE side, I had typecasted it to int *,


Thats unnecessary. In C. Are you accidentally compilng in C++ mode?

--
Mark McIntyre
CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html>
CLC readme: <http://www.angelfire.com/ms3/bchambless0/welcome_to_clc.html>


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
pointer to pointer intialize to NULL but still point to NULL Christopher C++ 4 07-09-2011 12:35 AM
How bad it is to dereference a null pointer Armen Tsirunyan C++ 18 10-05-2010 08:17 AM
Null pointer (NULL array pointer is passed) aneuryzma C++ 3 06-16-2008 05:48 AM
Avoiding dereference of NULL pointer Tony Jackson C Programming 17 12-29-2007 06:45 AM
vector has segfault null dereference andrey.vul@gmail.com C++ 6 10-03-2007 01:45 AM



Advertisments