Zend HashTable API:zend_hash_clean()

我是 Zend </ strong>引擎的新手并撰写扩展程序。 根据此页面,如果我想从哈希表中删除所有元素但实际上并未销毁所有内容 ,然后我可以使用 zend_hash_clean()</ code>函数。</ p>

然而,当我仔细研究这个特定的函数时,我意识到桶的数组没有发布为 在 zend_hash_destroy()</ code>中,即使为每个存储桶元素调用析构函数,并重置所有其他值(nNumUsed,nNumOfElements,nInteralPointer等)</ em>。</ p>

我非常怀疑这是我内存泄漏的根源。 </ p>

如果我错了,请告诉我。 非常感谢任何建议或指针。</ p>
</ div>

展开原文

原文

I'm new to Zend engine and writing an extension. According to this page if I want to remove all elements from a hashtable but not actually destroy everything, then I can use the zend_hash_clean() function.

However, when I carefully studied this particular function, I realised that the array of buckets is not released as in zend_hash_destroy() even though the destructor is invoked for each bucket element and all the other values are reset (nNumUsed, nNumOfElements, nInteralPointer, etc.).

I highly suspect this is the source of my memory leaks.

Please let me know if I'm wrong. Any suggestion or pointer is much appreciated.

doudi1449
doudi1449 你有没有给FREE_HASHTABLE()打电话?
接近 4 年之前 回复
douya7282
douya7282 但据我所知,指数已经重置(如你所说的那样重新初始化),但是桶没有被释放。插入新值时,将分配新内存...因此会发生内存泄漏。谢谢!
大约 4 年之前 回复
douan4106
douan4106 这非常清楚,不释放Buckets和索引映射并且能够重用它-它基本上等同于destroy+init。如果要释放内存,请使用destroy。
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问