News for hackers. Stuff that matters.
Re:C pointers are not hardware pointers by dave2000 on Sunday March 06, 2016 @08:07PM (#11236459)
So how does anything in this article add to my knowledge of c? I've been getting along just fine with the definition of pointers as agreed and employed by compilers and developers for a long time. This article appears part wrong, part obvious and part pointless.
Re:C pointers are not hardware pointers by netheril96 on Sunday March 06, 2016 @08:15PM (#11236486)
> This article appears part wrong, part obvious and part pointless.

Nothing in this article is wrong. What adds to your knowledge of C is that certain operations on C pointers that would make sense if they were just bit pattern are actually undefined behavior. Undefined behavior may lead to subtle bugs due to how compilers do optimizations.

Re:C pointers are not hardware pointers by dave2000 on Monday March 07, 2016 @05:53AM (#11238179)
I don't see how comparing the value of a pointer, the area of memory to which it points having been previously freed, is undefined behaviour. Is there a source in the spec for this?
Re:C pointers are not hardware pointers by belovedeagle on Wednesday March 09, 2016 @12:33AM (#11251132)
Yes, it's in the article.

> I don't see how [. . .] is undefined behaviour.

This is a perfectly meaningless sentence. "Undefined behavior" doesn't mean "things which don't make sense in a particular implementation", it literally means behavior not defined by the spec. The spec declines to define the meaning of p==q when p and/or q is a freed pointer. There's nothing to "see" here: it's just not defined.

Re:C pointers are not hardware pointers by TheCoelacanth on Monday March 07, 2016 @10:47AM (#11239475)
Did you miss the part where two pointers with identical bit patterns can compare not equal? E.g. in recent versions of gcc

    #include <stdio.h>

    int main(void)
    {
        int x, y;
        int *p = &x + 1;
        int *q = &y;
        printf("%p %p %d\n", p, q, p == q);
        return 0;
    }
prints

    0x7f7fffffdafc 0x7f7fffffdafc 0
Re:C pointers are not hardware pointers by botw on Monday March 07, 2016 @06:02PM (#11242440)
This is interesting. If this is true, then a lot of code based on the assumption p == q would be broken.