apr文档.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
apr文档

apr骨架代码数据类型的定义如下:typedef unsigned charapr_byte_ttypedef shortapr_int16_ttypedef unsigned short apr_uint16_ttypedef intapr_int32_ttypedef unsigned intapr_uint32_ttypedef longapr_int64_ttypedef unsigned longapr_uint64_ttypedef size_tapr_size_ttypedef ssize_tapr_ssize_ttypedef off_tapr_off_ttypedef socklen_tapr_socklen_ttypedef ino_tapr_ino_ttypedef apr_uint64_tapr_uintptr_t格式化数据时数据类型的宏定义:#defineAPR_SSIZE_T_FMT ld#defineAPR_SIZE_T_FMT lu#defineAPR_OFF_T_FMT ld#defineAPR_PID_T_FMT d#defineAPR_INT64_T_FMT ld#defineAPR_UINT64_T_FMT lu#defineAPR_UINT64_T_HEX_FMT lx#defineAPR_EOL_STR \n 要使用apr库,主程序必须干两件事:1.初始化apr库。2.创建一个全局内存池,供库函数使用。最后还要销毁他们。代码如下: apr_status_t rv; //返回错误状态码的变量rv apr_pool_t *mp; //内存池的指针 rv = apr_initialize(); //初始化apr库 if (rv != APR_SUCCESS) { //判断apr库是否初始化正确 assert(0); return -1; } apr_pool_create(mp, NULL); //创建内存池 ~~~~~ 添加编程代码 ~~~~~ apr_pool_destroy(mp); //销毁内存池 apr_terminate(); //apr库终止内存池的使用 大多数libapr的API都依赖于内存池。通过内存池,你可以轻松地管理一组内存块。试想一下,没有内存池系统,让你分配一些内存块的情况。你必须一个一个释放他们。如果你有十个内存块,你必须释放10次,否则你将遭受内存泄漏的bug。内存池解决了这个问题。当你分配一个内存池,您可以从池中分配多个内存块。如果要释放他们,你所要做的就是销毁存储池。通过它,你可以释放所有的内存块。这样做有两个好处。首先,如上所述,这样可以改善内存泄漏缺陷。其次,使得分配存储器块的成本变得较低。从某种意义上讲,内存池迫使你服从面向会话的编程。一个内存池是一种会话的上下文,也就是说内存池中的一组对象具有相同的生命周期。您可以在会话范围控制??一组对象。在会话的开始,你创建一个存储池。然后,你在会议期间创建的内存池的对象。请注意,您不必关心他们的生命周期。最后,在会议结束时,所有你需要做的是摧毁内存池。 注意:一般情况下,对象生命周期的控制是编程的一个难题。然而有很多的技术来解决它,比如智能指针,垃圾收集器等等。同时使用这些技术可能有些困难,内存池也是其中的一种技术,你需要小心混乱的使用他们。 有三个基础的API如下:APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool, apr_pool_t *parent);APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size);APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p); 使用apr_pool_create()创建一个内存池。使用apr_pool_destroy()销毁内存池。使用示例如下:apr_pool_t *mp;apr_pool_create(mp, NULL);char *buf1;buf1 = apr_palloc(mp, MEM_ALLOC_SIZE);~~~~~ apr_pool_destroy(mp); 有另外一个函数apr_pcalloc()也可以从内存池分配空间,但是它会把内存初始化为0。内存池一般分配较小的内存,打内存

文档评论(0)

gangshou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档