【问题标题】:What is the proper way to free memory from an ldap_parse_reference call?从 ldap_parse_reference 调用中释放内存的正确方法是什么?
【发布时间】:2013-08-05 10:53:27
【问题描述】:

ldap_parse_reference 的文档说通过调用 ldap_value_free 来释放引用(参见手册页的 http://linux.die.net/man/3/ldap_parse_reference。)但是,例程 ldap_value_free 已被弃用。

有什么正确的方法吗? (请注意,我查看了 openldap 代码,发现其中一些代码正在使用 ber_memvfree,但这对我来说似乎不对。我不喜欢混合调用,文档也没有说要这样做那样。)

谢谢。

【问题讨论】:

    标签: c openldap


    【解决方案1】:

    我去查看了 openLDAP 代码。在文件clients/tools/ldapsearch.c 中,例程print_reference 调用ldap_parse_reference。通过调用 ber_memvfree((void **)refs) 释放生成的引用(打印后)。

    我只能假设这是释放内存的正确方法。

    【讨论】:

      【解决方案2】:

      ldap_value_free(),正如您引用的手册页所说。 man page for ldap_value_free() 的哪个位置说它已被弃用?

      【讨论】:

      • 源代码中已弃用(请参阅:openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=include/…)。它引用了ldap_value_free_len() 函数作为替代。
      • @Ben 它自己的手册页肯定不会被弃用,或者 `ldap_parse_reference() 的手册页也不会被弃用。
      • Ben 的链接清楚地表明该原型仅在定义了 LDAP_DEPRECATED 且非零时可用。
      • @Ben - ldap_value_free_len 的手册页有一个 struct berval ** 作为参数。但是,我只有一个 char **。它似乎不适合这种情况。
      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多