gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:24 25 4
gpt4 key购买 nike

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

 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;

我尝试使用

mini_cache_globals mini_cache = shmat(0, NULL, 0);

得到这个管理结构,但是我发现当我使用

mini_cache->slots[index];

获取一个 mini_kv_key 将返回一个段错误,访问也是如此

mini_cache->segments_num[index];

很抱歉我的英语不好,密码是here

最佳答案

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

关于访问全局管理结构中的结构数组时的linux共享内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com