I often see (in Linux kernel for example) that unsigned long is used to hold the pointers. I wonder what is the reason for this given that size of a pointer may be larger than integer type (including long).
Is it portable to keep a pointer in unsigned long rather than in uintptr_t in Linux user space applications? (Although I know that uintptr_t guarantees to convert from void * to uintptr integer and back without loss of information)
Thanks.