2011-11-20 36 views
2

我试图调试一些遗留代码的问题。在试图理解我在看什么时,我发现它使用ftok构建了两个独特的共享内存空间。我在网上查看它的功能,我偶然发现了这个链接。我深入了解并发现ftok不能保证唯一的密钥,并且空间可能发生碰撞的可能性很小。如何确定ftok共享内存冲突

ftok() collisions

所以,我坚持努力,以确定这是否是对我还是不是这样的。我如何确定它是否真的是共享内存空间碰撞问题?它可能是遗留可执行文件中可怕的内存泄漏...

回答

0

如何确定它是否真的是共享内存空间冲突问题?

简单:拨打ftok()具有相同的参数,你真正的代码,并比较了为平等返回两个ints

所以只要返回的密钥是唯一的,生成的共享内存空间也没有冲突?

只要密钥是不同的,两个内存段是完全独立的。

该应用程序可以自由地将任何值放入其期望的两个段中。如果应用程序想要将值放入segment1指向segment2中的值,所以直到应用程序保持所有引用都是直的。

+0

所以只要键返回是唯一产生的共享内存空间也从碰撞免费的吗? – adi

+0

谢谢!为了以防万一,我会添加一些调试代码。然后,具有当前PID扩展名的唯一文件名应该足够好。这在其他地方主要是一个问题... 感谢您的澄清 – adi