Interview Questions

malloc is returning crazy pointer values ...

C Interview Questions and Answers


(Continued from previous question...)

malloc is returning crazy pointer values ...

Q: malloc is returning crazy pointer values, I have included the line
extern void *malloc();
before I call it.

A:malloc accepts an argument of type size_t, and size_t may be defined as unsigned long. If you are passing ints (or even unsigned ints), malloc may be receiving garbage (or similarly if you are passing a long but size_t is int).
In general, it is much, much safer to declare standard library functions by #including the appropriate header files, rather than typing extern declarations yourself. (A related problem is that it is not safe to print size_t values, including the result of sizeof, using printf's %d format. The portable approach is to use an explicit (unsigned long) cast, and %lu format: printf("%lu\n", (unsigned long)sizeof(int)).

(Continued on next question...)

Other Interview Questions