However I know that the use of "real" pointers would be more correct, the way it is done now in IMHO more safe as it does not bring the danger of dereferencing bad pointers without any overhead (besides the double cast).

Again, what do you think is better?