关于共享内存的一些心得

和我的导师在一块搞了两天,终于弄明白了内存为什么泄漏。

原来是每次shmat之后忘了shmat了,因为我们一般用这样的函数形式:shmat(shm_id, 0, 0);因为第二个参数是零,(参见shmat函数说明),所以每次at的时候系统都会连向一个未被使用的地址,因为我们每次at之后都没有shmdt,所以系统会认为这块内存是被占用,所以当又一次shmat的时候系统会重新分配一块内存 ,然后返回这块内存的起始地址,循环这样的话,肯定会造成内存泄漏了。。。。

所以每次我们shmat之后都不要忘记shmdt!!!

你可能感兴趣的:(关于共享内存的一些心得)