2011-11-20 34 views
2

我試圖調試一些遺留代碼的問題。在試圖理解我在看什麼時,我發現它使用ftok構建了兩個獨特的共享內存空間。我在網上查看它的功能,我偶然發現了這個鏈接。我深入瞭解並發現ftok不能保證唯一的密鑰,並且空間可能發生碰撞的可能性很小。如何確定ftok共享內存衝突

ftok() collisions

所以,我堅持努力,以確定這是否是對我還是不是這樣的。我如何確定它是否真的是共享內存空間碰撞問題?它可能是遺留可執行文件中可怕的內存泄漏...

回答

0

如何確定它是否真的是共享內存空間衝突問題?

簡單:撥打ftok()具有相同的參數,你真正的代碼,並比較了爲平等返回兩個ints

所以只要返回的密鑰是唯一的,生成的共享內存空間也沒有衝突?

只要密鑰是不同的,兩個內存段是完全獨立的。

該應用程序可以自由地將任何值放入其期望的兩個段中。如果應用程序想要將值放入segment1指向segment2中的值,所以直到應用程序保持所有引用都是直的。

+0

所以只要鍵返回是唯一產生的共享內存空間也從碰撞免費的嗎? – adi

+0

謝謝!爲了以防萬一,我會添加一些調試代碼。然後,具有當前PID擴展名的唯一文件名應該足夠好。這在其他地方主要是一個問題... 感謝您的澄清 – adi