【发布时间】:2012-01-31 11:05:44
【问题描述】:
在删除之前是否需要释放 QSemaphore?
如果是,我应该在
delete semaphore之前调用semaphore->release(n),但是我怎么知道获得了多少(n)资源? (我知道available()有多少资源,但不知道信号量的整体“大小”。)
我的问题的原因:我正在寻找内存泄漏并发现了一个造成内存泄漏的 QSemaphore,尽管(似乎已经)调用了 delete。可能是因为它没有正确释放 - The doc 说“警告:销毁正在使用的信号量可能会导致未定义的行为。”
编辑: 内存泄漏实际上是在所有对象被销毁之前放置的内存转储函数的结果。添加一个额外的范围{ ... } 对此有所帮助。尽管如此,我的问题仍然存在。
【问题讨论】:
-
也许你应该改写一下。 “虽然调用了删除,但它没有被删除。”没有意义。当您对其调用 delete 时,该对象将被销毁。你的意思是它没有发布吗?
-
我重新表述了我的问题。信号量显示在内存泄漏列表中 - 如果它实际上没有被删除,我不能说,只是它似乎没有被释放/删除正确。