![](https://csdnimg.cn/release/download_crawler_static/4099259/bg4.jpg)
d->julian = FALSE;
d->dmy = TRUE;
d->month = m;
d->day = day;
d->year = y;
g_assert (g_date_valid (d));
return d;
}
开始的预条件检查确保用户传递合理的年月日值;结尾的断言确保 g l i b 构造一个健全的对
象,输出健全的值。
断言函数g_assert_not_reached() 用来标识“不可能”的情况,通常用来检测不能处理的
所有可能枚举值的s w i t c h 语句:
switch (val)
{
case FOO_ONE:
b r e a k ;
case FOO_TWO:
b r e a k ;
d e f a u l t :
/* 无效枚举值 * /
g _ a s s e r t _ n o t _ r e a c h e d ( ) ;
b r e a k ;
}
所有调试宏使用g l i b的g _ l o g ( ) 输出警告信息,g _ l o g ( ) 的警告信息包含发生错误的应用程序
或库函数名字,并且还可以使用一个替代的警告打印例程。例如,可以将所有警告信息发送
到对话框或l o g 文件而不是输出到控制台。
3.3 内存管理
g l i b用自己的g _ 变体包装了标准的 m a l l o c ( ) 和f r e e ( ) ,即g_malloc() 和 g _ f r e e ( )。它们有以
下几个小优点:
• g_malloc()总是返回g p o i n t e r,而不是c h a r *,所以不必转换返回值。
• 如果低层的m a l l o c ( ) 失败,g _ m a l l o c ( )将退出程序,所以不必检查返回值是否是 N U L L。
• g_malloc() 对于分配0字节返回N U L L 。
• g_free()忽略任何传递给它的N U L L 指针。
除了这些次要的便利, g_malloc() 和 g _ f r e e ( ) 支持各种内存调试和剖析。如果将 e n a b l e -
m e m - c h e c k 选项传递给g l i b的c o n f i g u r e脚本,在释放同一个指针两次时, g _ f r e e ( )将发出警告。
e n a b l e - m e m - p r o f i l e 选项使代码使用统计来维护内存。调用 g _ m e m _ p r o f i l e ( ) 时,信息会输出到
控制台上。最后,还可以定义 U S E _ D M A L L O C,G L I B 内存封装函数会使用 m a l l o c ( ) 。调试宏
在某些平台上在d m a l l o c . h中定义。
函数列表:g l i b内存分配
52使用第二部分 Linux编程常用C语言函数库及构件库