struct的memset使用问题

bigkite 2009-10-30 02:53:21
我定义的struct:
struct qpool
{
map<string,struct queuex *> qmap;//map<string qname,int fd>
map<string,struct topicx *> tmap;//map<string qname,int fd>
};

int main(int argc,char **argv)
{
struct qpool qpl;
memset(&qpl,0,sizeof(qpl));
init(&qpl);
...

return 0;
}
当init(struct qpool *)函数使用qpl时,程序会报段错误。
如果我取消memset(&qpl,0,sizeof(qpl)),就可正常运行。这是为什么。
编译环境是linux,使用g++
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigkite 2009-10-30
  • 打赏
  • 举报
回复
谢谢诸位。
mengde007 2009-10-30
  • 打赏
  • 举报
回复
map的底层是红黑树,你这么一来,把内部的数据全破坏了;仔细看看STL源码;
bigkite 2009-10-30
  • 打赏
  • 举报
回复
memset(&(qpl.qmap),0,sizeof(qpl.qmap));也不行,报段错误
WuXinyang 2009-10-30
  • 打赏
  • 举报
回复
报什么错呢?
bigkite 2009-10-30
  • 打赏
  • 举报
回复
memset(map,0,sizeof(map));
这样做,为什么可以?
bigkite 2009-10-30
  • 打赏
  • 举报
回复
初始化不行吗。
CodeSpy 2009-10-30
  • 打赏
  • 举报
回复
我想你并不知道map <string,struct topicx *>具体是如何实现的。
xingzhe2001 2009-10-30
  • 打赏
  • 举报
回复
你memset把 qmap和tmap的类数据信息破坏了,当然出错了

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧