如何在库代码中分配和维护内存?

时间:2014-01-16 11:18:48

标签: c memory memory-management

在我目前的项目中,我的程序需要调用库来与服务器建立通信。对于某些需求,我需要修改库代码,以便它可以分配内存并且分配的内存存在,除非我调用库中的某些函数来释放它。我对库没有太多的了解,对我来说,库就像一个可以由多个程序调用的API。因此,图书馆没有生命周期。根据我的理解,如果我的程序在库中调用一个函数,该函数会分配内存并完成一些工作,但是在完成所有操作后,库代码只是“休息”并且指向该内存的指针将消失。那有什么方法可以解决这个问题吗?如果我的理解是错的,你能给我一些指导吗?谢谢!

1 个答案:

答案 0 :(得分:2)

好吧,如果库需要维护内部状态,那么典型的解决方案是向库中添加一个必须在任何其他API函数之前调用的入口点。

这种功能通常被称为“初始化函数”,即mylibrary_init()或其他东西。然后你可以让mylibrary_deinit()或其他东西关闭库,释放状态。

如果库需要在同一个程序中处理多个用户,则状态需要以某种方式公开,以便init()函数返回某种状态标识符,需要与所有其他API调用一起传递,让他们分开。