I was browsing through some documentation and questions/answers and saw it mentioned. I read a brief description, stating that it would be basically a promise from the programmer that the pointer won’t be used to point somewhere else.
Can anyone offer some realistic cases where its worth actually using this?
restrictsays that the pointer is the only thing that accesses the underlying object. It eliminates the potential for pointer aliasing, enabling better optimization by the compiler.For instance, suppose I have a machine with specialized instructions that can multiply vectors of numbers in memory, and I have the following code:
The compiler needs to properly handle if
dest,src1, andsrc2overlap, meaning it must do one multiplication at a time, from start to the end. By havingrestrict, the compiler is free to optimize this code by using the vector instructions.Wikipedia has an entry on
restrict, with another example, here.