c++的map对象赋值问题

上下文情况如下:mapTest是自己定义的一个map容器,里面存放了数据以后,准备存到共享内存中。然后其他构件从共享内存中读取出来。所以就有一个从地址指针转换成map容器... 上下文情况如下:
mapTest是自己定义的一个map容器,里面存放了数据以后,准备存到共享内存中。然后其他构件从共享内存中读取出来。
所以就有一个从地址指针转换成map容器的过程,在这个转换过程中,我使用了下面这条语句,buff为共享内存的始地址,
也是mapTest存在内存中的始地址,stuout是另外定义的一个用来存贮共享内存数据的map对象。整个程序编译没有问题,但是
运行后报错:0x00415b5d处未处理的异常:0xC000005:读取位置*******时发生访问冲突。程序就崩溃了。
memcpy(&stuout,buff,sizeof(mapTest));

修改代码为:
stuout = mapTest;
这样赋值就没有问题,但是不符合上下文要求。
不知道是不是因为map对象拷贝到内存中的时候有其他需要特别注意的地方?例如结束符?在此请教各位高手帮帮小弟。
一楼的回答我之前试过,编译是通不过的:
error C2440: 'type cast' : cannot convert from 'std::map<_Kty,_Ty>' to 'void *'
因为我定义结构体的时候直接定义为非指针变量,所以需要用&来取地址。
若定义为*stuout,按照一楼的写法同样出错,还是同一个错误……希望一楼验证下。
展开
 我来答
百度网友4dc7f90
2010-07-28 · TA获得超过1.6万个赞
知道小有建树答主
回答量:1702
采纳率:0%
帮助的人:712万
展开全部
你要知道结构体变量名也是指针,不过这个指针比较特别。(至于怎么特别就得自己去看书了)
将你的代码改为
memcpy(stuout,buff,sizeof(mapTest));

就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A3630623
2010-07-28 · TA获得超过180个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:42.1万
展开全部
memcpy是按位拷贝,你写的结构体或者类的存储形式是不是和buf的不同,若不同则应该每个项逐一拷贝。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-07-28
展开全部
大哥 你的问题太专业了吧 我就是路过的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式