## Frequently Asked Questions

Frequently Asked Questions — Find answers to common questions in the GMime manual

## Questions and Answers

This is an "index" of the reference manual organized by common "How do I..." questions. If you aren't sure which documentation to read for the question you have, this list is a good place to start.

##### 1. General

1.1. | Where can I get help with GMime, submit a bug report, or make a feature request?
| See the documentation on this topic.
1.2. | How do I port from one GMime version to another?
| See the list of incompatible changes from 2.2 to 2.4.
1.3. | How does memory management work in GMime? Should I free data returned from functions?

Most accessor functions return a pointer to internal members. When these internal members are objects themselves (e.g. subclasses of GObject), there is no need to unref them unless otherwise stated in the documentation for that particular function.

For accessor functions that return strings, they will be declared "const" if they should not be freed. Non-const strings should be freed with g_free().

1.4. | How do I use GMime with threads?
| First, read the GThread documentation for portable threading primitives. Secondly, all functions in gmime-charset, gmime-iconv and gmime-utils should be thread-safe. Objects subclassing GObject are not. This means that you'll have to do your own mutex locking if you want to access the same GObjects from multiple threads.
1.5. | How do I use GMime with C++?
| The GMime header files use the subset of C that's also valid C++, so you can simply use the normal GMime API in a C++ program.