memset coredump 问题

大维啊 2012-05-26 06:26:55
in sec_api_h 定义了EdpInfo一个sokect的结构体

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
struct EdpInfo {
struct sockaddr_in servAddr;
int sock;
};
..

在sec.c 中的局部函数中
struct EdpInfo* edpinfo;
printf("sockaddr_in is %d\n",sizeof(struct sockaddr_in));
printf("edpinfo->servAddr is %d\n",sizeof(edpinfo->servAddr));
memset((unsigned char * )&(edpinfo->servAddr), 0, sizeof(struct sockaddr_in));
edpinfo->sock = -1;
printf("SEC_MAIN =%ld,SEC_PORT=%ld,SEC_TIMEOUT =%ld\n",SEC_MAIN,SEC_PORT,SEC_TIMEOUT);

当执行到memset时就core了.我调gdb查看得
#0 0x06033be7 in memset () from /lib/tls/libc.so.6
(gdb) where
#0 0x06033be7 in memset () from /lib/tls/libc.so.6
#1 0x0a0b7bf0 in ?? ()
#2 0x009fbccc in MCMAPIGenerDisplayKeyonKCED () from /home/feel/Online/lib/libSec.so
#3 0x009fa9b2 in fesp::OXXX::iGernerDisplayMasterKeyOnKCED (this=0x3891bd0) at OXXX.cpp:281
跪求Coredump原因.
...全文
254 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大维啊 2012-05-26
  • 打赏
  • 举报
回复
我也是从同事那里学到的where 的用法.我也是第一次见到bt,呵呵,刚试了一下,不错.bt学到了.
xunxun 2012-05-26
  • 打赏
  • 举报
回复
我也觉得是没预先分配的原因

看到where愣了一下,我一般用bt
大维啊 2012-05-26
  • 打赏
  • 举报
回复
正是这个原因造成的..我把目光停留到memset上了..谢谢!
無_1024 2012-05-26
  • 打赏
  • 举报
回复
struct EdpInfo* edpinfo = (struct EdpInfo* )malloc(sizeof(struct EdpInfo));
無_1024 2012-05-26
  • 打赏
  • 举报
回复
struct EdpInfo* edpinfo;
先对他分配空间 然后在对他的成员变量初始化值 要不然就是非法使用地址

64,653

社区成员

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

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