GObject's use of GLib's g_malloc() memory allocation function will cause the program to exit unconditionally upon memory exhaustion, unlike the C library's malloc(), C++'s new, and other common memory allocators which allow a program to cope with or even fully recover from out-of-memory situations without simply crashing. This tends to work against including GObject in software where resilience in the face of limited memory is important, or where very many or very large objects are commonly handled. The g_try_new() can be used when a memory allocation is more likely to fail (for a large object for example), but this cannot grant that the allocation will not fail elsewhere in the code.