我正在尝试使用一些遗留代码调试问题。在尝试理解我正在查看的内容时,我发现它使用ftok
构建了两个唯一的共享内存空间。我在网上查看了它的作用,我偶然发现了这个链接。我看得更深,发现ftok
不保证唯一的密钥,并且空间可能会发生碰撞的可能性很小。
所以,我一直在努力确定这是否适合我。如何确定它是否真的是共享内存空间冲突问题?它可能是遗留可执行文件中可怕的内存泄漏...
答案 0 :(得分:0)
如何确定它是否真的是共享内存空间冲突问题?
简单:使用与实际代码相同的参数调用ftok()
,并比较为了相等而返回的两个ints
。
因此,只要返回的密钥是唯一的,生成的共享内存空间也没有冲突吗?
只要密钥不同,两个内存段就完全独立了。
应用程序可以自由地将任何值放入它想要的两个段中。如果应用程序想要将值放入例如segment1指向segment2中的值,由应用程序决定是否保持所有引用。