| Ownership of dynamic objects |
| ---------------------------- |
| |
| Any object-oriented system or language that doesn't have automatic garbage collection has many potential pitfalls as |
| far as the pointers go. Therefore, some standards must be adhered to as far as who owns what. |
| |
| Strings: |
| Arguments passed into a function are owned by the caller, and the function will make a copy of the string for its own |
| internal use. The string should be const gchar *. Strings returned from a function remain the property of the |
| function called, and the caller must make a copy if it is to use the string for an extended duration. |
| |
| Objects: |
| The ownership of an object during a function call depends on the type of function. If the function is simply returning |
| something from the object, such as _get_name(), the caller retains ownership. If the object passed is to be |
| manipulated in some way, it is generally the case that the function will take over the ownership. This should be |
| expressed as a reference increment on that object, but isn't in the general case (yet). |