C 访问mmap';d内存导致挂起

C 访问mmap';d内存导致挂起,c,mmap,C,Mmap,当我尝试编辑共享内存段时,我的程序挂起。 我正在尝试创建一个共享内存段,该段包含最多20个字符的字符串(不包括\0) 程序挂起在strncpy上。使我自己的循环与strncpy相同,当我尝试设置第一个字符时,它将挂起 如果我犯了什么错误,我可以做得更多,但我被难住了。我建议你从阅读开始。它不会返回指向指针的指针。还要考虑如果复制的字符串长度超过20个字符会发生什么情况。我有mem=mmap(…),但它会出错。。所以我想问题是我的“修正”不正确。我已经解决了这个问题,虽然它源于-基本上我认为我需要

当我尝试编辑共享内存段时,我的程序挂起。 我正在尝试创建一个共享内存段,该段包含最多20个字符的字符串(不包括\0)

程序挂起在strncpy上。使我自己的循环与strncpy相同,当我尝试设置第一个字符时,它将挂起


如果我犯了什么错误,我可以做得更多,但我被难住了。

我建议你从阅读开始。它不会返回指向指针的指针。还要考虑如果复制的字符串长度超过20个字符会发生什么情况。我有mem=mmap(…),但它会出错。。所以我想问题是我的“修正”不正确。我已经解决了这个问题,虽然它源于-基本上我认为我需要一个char*来用mmap存储字符串,但我没有。谢谢:)您在
*mem=mmap(…)
上遇到崩溃,因为
mem
没有指向任何地方,因此取消引用指针会导致错误。您能告诉我们为什么将
mem
声明为指向
char
的指针吗?我编辑了上面的评论。关于mmap如何获取内存的想法基本上是错误的。
char** mem;
mem = mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_SHARED, -1, 0);
char* new = getNewString();
strncpy(*mem, new, strlen(new));