【发布时间】:2013-03-13 16:11:23
【问题描述】:
在函数sendto() 之后释放缓冲区'pkt' 时出现分段错误
u_char* create_pkt(u_char* pkt)
{
....
pkt = (u_char *)malloc(40);
...
return pkt
}
int main()
{
....
u_char* pkt;
create_pkt(pkt);
if (sendto(sd, pkt, 40, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr)) < 0)
free(pkt);
}
调试信息显示:
Program received signal SIGSEGV, Segmentation fault.
0x0000003897482864 in __GI___libc_free (mem=0x7fffffffe010) at malloc.c:2986
这有什么问题?谢谢!
2986 ar_ptr = arena_for_chunk(p);
2986 ar_ptr = arena_for_chunk(p);
【问题讨论】:
-
为什么
create_pkt()还要争论?
标签: c linux segmentation-fault