Try Sparse to analyze your C code. Unlike Splint, it works well with the GTK libraries and reports a wide range of issues. It also neatly fits in with the autotools build system, so you can basically run your autotools and prep for a make, and then call:
cgcc is a wrapper which invokes sparse first, and then gcc. Then go through the warnings and fix them.