- 论坛徽章:
- 0
|
在多线程程序中使用了calloc
char **dstr
dstr[cnt] = calloc(1,len);
结果运行中出现signal 11
gdb 调试发现 calloc 貌似返回了一个栈地址
#0 0x003c4b6c in _int_malloc () from /lib/libc.so.6
#1 0x003c60be in calloc () from /lib/libc.so.6
#2 0x08089e29 in get_args (rstr=0xb7ba5ffc "54$1$2$14528$303$282$1$", dstr=0xb7ba3f40, num_limit=7, str_limit=11)
at gamework/deal_data.c:497
#3 0x0806ad08 in move_troop (s=145, buff=0xb7ba5ffc "54$1$2$14528$303$282$1$") at gamework/war_deal.c:3241
#4 0x0808a89b in real_deal (s=145) at gamework/deal_data.c:706
#5 0x0808a99b in real_deal (s=145) at gamework/deal_data.c:756
#6 0x0808bb98 in do_accept (s=145) at function.c:463
#7 0x004d549b in start_thread () from /lib/libpthread.so.0
#8 0x0042c42e in clone () from /lib/libc.so.6
(gdb) f 4
#4 0x0808a89b in real_deal (s=145) at gamework/deal_data.c:706
706 if (cmd > MAX_FUNC_NUM )
(gdb) p &cmdstr
$15 = (char (*)[4]) 0xb7ba3ff4
(gdb) f 2
#2 0x08089e29 in get_args (rstr=0xb7ba5ffc "54$1$2$14528$303$282$1$", dstr=0xb7ba3f40, num_limit=7, str_limit=11)
at gamework/deal_data.c:497
497 if (!(rstr == SPACE))
(gdb) p dstr[cnt]
$16 = 0xb7ba3ff4 "235""
dstr[cnt] &cmdstr 地址居然一样,有谁能赐教一下? |
|