有关linux共享内存的问题

关于linux共享内存的问题

我通过shmget设置了共享内存大小为1字节,然后写入10字节的数据,为啥我读出来也会读出来10字节的数据呢?

img

img

img

因为c语言是基于指针的,而字符串以\0结尾,没遇到\0它就继续去访问后续的内存,哪怕这个内存不是它有权访问的,它也从里面读数出来
但是应该没法写入,写入会受cpu保护

共享内存是以页为单位的,申请的1字节,实际是4096字节。写入10字节可以正常读取。