Handling argc==0 in the kernel
Handling argc==0 in the kernel
Posted Jan 29, 2022 23:08 UTC (Sat) by areilly (guest, #87829)In reply to: Handling argc==0 in the kernel by matthias
Parent article: Handling argc==0 in the kernel
No: &argv[1] is semantically identical to argv + 1. It is pointer arithmetic and does not cause a dereference.
However: in deference to C support on AS400 (and Unisys? anything with fancy pointer representations) it *is* undefined behaviour for arrays of length zero. It's only legal to construct a pointer value to the single element past the end of the array, whether or not the pointer is subsequently dereferenced. This is also why it's technically illegal to use a post-decremented pointer traversal that accesses the first element of an array. The one-past-the-end rule doesn't extend to one-before-the-beginning. Sigh.
The LWN site is currently under high scraper load, so comment display has been suppressed for anonymous users. If you are a human, you may read the comments by clicking the button below:
Note: you can avoid this step in the future by logging into your LWN account.
