Tiendo a usar funciones std * alloc/free para asignar/liberar memoria dinámica en mis programas C. Me pregunto si hay buenas razones para usar el GLIB Memory Allocation functions en lugar de los estándar.Asignación de memoria glib VS std * alloc y libre
Agradecería que la comunidad pudiera señalar situaciones en las que cualquiera de estas soluciones sea ganadora/laxa. También me interesan los problemas de rendimiento que podría afectar en caso de que utilice uno u otro.
Gracias!
Editado para plataformas estatales
Estos programas normalmente se ejecutan en todo tipo de distribuciones de Linux/Unix, normalmente de 64 bits de Archs compilan utilizando gcc 4.2.
En Linux, la asignación nunca falla de todos modos. (Con la configuración predeterminada del kernel). Por lo tanto, aunque siempre controlo el valor de retorno de malloc, me sentiría sucio de lo contrario, esa ruta de código nunca se usa de todos modos. –
Dejé de revisar los valores de devolución de malloc hace mucho tiempo. ¿Qué vas a hacer si te has quedado sin memoria? Lo más probable es que ni siquiera puedas escribir un mensaje a stderr. Parece apropiado abortar el programa que ocurrirá de todos modos tan pronto como se quite la referencia del puntero nulo. – JeremyP
@JeremyP, ¡exactamente!Es por eso que preferiría abortar el programa. Puedo imaginar un caso de uso para probar si hay memoria suficiente para asignar algo, pero para esos casos siempre hay 'g_try_malloc()'. – ptomato