首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问全局管理结构中的结构数组时,linux共享内存错误

访问全局管理结构中的结构数组时,linux共享内存错误
EN

Stack Overflow用户
提问于 2013-08-03 14:00:01
回答 1查看 81关注 0票数 0

我通过shmget创建了一个linux共享内存,并在第一个内存地址上创建了这样的全局管理结构,

代码语言:javascript
复制
 typedef struct{
        mini_kv_key *slots;
        unsigned int slots_mask;
        unsigned int slots_num;
        mini_cache_segment **segments;  
        unsigned int segments_num;
        unsigned int segments_mask;
    } mini_cache_globals;

我试着用

代码语言:javascript
复制
mini_cache_globals mini_cache = shmat(0, NULL, 0);

获取这个管理结构,但是我发现当我使用

代码语言:javascript
复制
mini_cache->slots[index];

获得一个mini_kv_key将返回一个段错误,访问也会返回一个错误。

代码语言:javascript
复制
mini_cache->segments_num[index];

我为我糟糕的英语感到很抱歉,代码是这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-03 16:15:01

您正在尝试访问仅在其他进程中有效的指针(该进程实际上创建了结构并设置了指针)。保存在共享结构中的任何指针在任何其他进程中都无效。为了达到您的目标,您应该保存所有需要共享的数据,并存储相对偏移量,而不是指针。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18033608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档