Oni*_*adu 1 c memory shared nested structure
我有两个结构:
struct bets{
int bets[36];
int last_bet;
}bets
struct board{
int type;
bets *bet;
}board
Run Code Online (Sandbox Code Playgroud)
我创造了一大块鲥鱼记忆sizeof(board).所以,我在共享内存中得到了一个指向Board的指针(以免称之为ptr).我创建了一个新的board和bets结构
board *b,bets * bts....添加board->bet = bts.现在,我将"b"复制到了ptr
memcpy(ptr, bts, sizeof(board)).我可以访问ptr->type.但是当我尝试访问时
ptr->bet->last_bet,我遇到了分段错误错误.
我也试过像这样复制:
board *b;
memcpy(ptr, b, sizeof(board));
bets *bts;
memcpy(ptr->bet, bts, sizeof(bets)).
Run Code Online (Sandbox Code Playgroud)
仍然得到分段错误错误.
如何将两个struct one复制到另一个内部并仍然可以访问嵌套的?
标准的"深度复制"到共享内存中是没有用的,因为指针,即使它们指向共享内存段,也是进程的虚拟地址空间的本地,并且当另一个进程映射共享内存时不一样.您需要存储共享内存段开头的偏移量,而不是指针.size_t将是一个合适的类型.