描述says:
Deinitialize libusb.
Should be called after closing all open devices and before your
application terminates.
手册没有解释为什么需要它.我对终止已初始化并使用libusb的程序而不调用libusb_exit()的后果感到好奇.如果由于某些原因我的程序在终止之前无法调用libusb_exit(),有人可以解释可能会发生什么坏事吗?它会导致系统资源泄漏吗?
解决方法 这是涉及背景的事情.只要您拥有单个用户应用程序,通常最终会使用默认上下文.每当用户的会话被销毁时,那个就会死掉,这可能是你的应用程序被关闭的时候.
另请注意,您不能简单地泄漏,因为如果您的应用程序崩溃,您不会调用libusb_exit(好吧,即使可能发生泄漏,泄漏的内存将在崩溃后立即释放,所以我不会关心它关于崩溃本身的原因).
只要您有多个会话,就会出现问题.
有关详细信息,请参见here和here.
如果在这种情况下调用libusb_exit失败并且会话从应用程序的角度来看处于释放状态,那么肯定会泄漏内存,因为libusb实际上不会破坏上下文.事实上,在这种情况下,软件不会被关闭,但是该内存仍在使用中且无法再访问,因为您没有调用libusb_exit来释放它.
这就是为什么文档建议每次要破坏上下文时调用libusb_exit,无论是否为默认上下文.
总结以上是内存溢出为你收集整理的c – 不调用libusb_exit()的后果是什么全部内容,希望文章能够帮你解决c – 不调用libusb_exit()的后果是什么所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)