程序异常退出时没有释放共享内存,调试时出现错误,在网上搜了一下,在shell中是可以查看与释放已分配的共享内存的。
查看共享内存,使用ipcs命令,不加任何参数时,这条命令会把共享内存/信号量/消息队列的信息都打印出来。如果只想显示共享内存信息,则使用ipcs -m。
要删除共享内存,需要使用ipcrm命令,使用shmid做为参数。shmid在ipcs命令中会有输出。
下面的命令可以释放所有已分配的共享内存:
ipcs -m | awk '$2 ~ /[0-9]+/ {print $2}' | while read s; do sudo ipcrm -m $s; done
深入阅读请看: 批量释放系统共享内存