We're a place where coders share, stay up-to-date and grow their careers.
Pointers are only well defined for null pointer values or when pointing into or one past the end of an allocated array.
The first increment satisfies this, since it happens before the free occurs.
After the free, the pointer value is undefined and so the second increment has undefined behavior.
But you're not actually using that pointer in the code, so I fail to see how that's undefined behaviour. An invalid pointer which isn't used still doesn't cause any runtime issues, or is there something about that too in the standards?
The last increment of the pointer is when it has an undefined value, producing undefined behavior.
For example it might behave like a trap representation.
Regardless, the program cannot be reasoned about after this point. :)
Pointers are only well defined for null pointer values or when pointing into or one past the end of an allocated array.
The first increment satisfies this, since it happens before the free occurs.
After the free, the pointer value is undefined and so the second increment has undefined behavior.
But you're not actually using that pointer in the code, so I fail to see how that's undefined behaviour.
An invalid pointer which isn't used still doesn't cause any runtime issues, or is there something about that too in the standards?
The last increment of the pointer is when it has an undefined value, producing undefined behavior.
For example it might behave like a trap representation.
Regardless, the program cannot be reasoned about after this point. :)