[求助]小程序出现Segmentation fault。。。找不到原因

C、C++和Java语言
回复
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39
送出感谢: 0
接收感谢: 0

[求助]小程序出现Segmentation fault。。。找不到原因

#1

帖子 kinzess » 2009-01-22 18:46

代码:
//get content length
22 int getContentLength(char *buf)
23 {
24 char str1[] = "Content-Length:", str2[] = "\r\n";
25 char *ptr1, *value, *ptr2;
26 int ret = 0;
27 ptr1 = strstr (buf, str1) + 16;
28 ptr2 = strstr (ptr1, str2);
29 int temp1 = strlen (ptr1);
30 int temp2 = strlen (ptr2);
31 strncpy (value, ptr1, temp1 - temp2);
32 ret = atoi (value);
33 return ret;
34 }

出问题的就是以上这段。。。输入的buf是服务器返回的http信息。。
函数的作用是取得Content-length长度。

用gdb调试:
main (argc=Cannot access memory at address 0x7fff3834371f
) at post.c:241
241 return 0;

设置了断点之后,发现
(gdb) b 30
(gdb) bt
Breakpoint 1 at 0x400d16: file post.c, line 30.
#1 0x00000000004013ce in receiveResponse () at post.c:162
#2 0x0000000000401604 in main (argc=11, argv=0x7ffff4fd9258) at post.c:239
(gdb) s
31 strncpy (value, ptr1, temp1 - temp2);
(gdb) bt
#1 0x00000000004013ce in receiveResponse () at post.c:162
#2 0x0000000000401604 in main (argc=11, argv=0x7ffff4fd9258) at post.c:239
(gdb) s
32 ret = atoi (value);
(gdb) bt
#2 0x0000000000401604 in main (argc=Cannot access memory at address 0x7fff3834371f

就出现了以上的问题,造成了Segmentation fault。。。
整个程序已经正常运行了。。就是最后出现了这个。。。可是我没有操作国argc阿。。怎么出现错误呢?
完全找不到原因。。。水平太低了。。求助。。已经google一整天了。。。
先谢谢了 :em20 :em20 :em20 :em20
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: [求助]小程序出现Segmentation fault。。。找不到原因

#2

帖子 BigSnake.NET » 2009-01-22 18:48

value 没分配
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39
送出感谢: 0
接收感谢: 0

Re: [求助]小程序出现Segmentation fault。。。找不到原因

#3

帖子 kinzess » 2009-01-22 18:57

:em20 :em20
原来是这个。。。我晕了。。谢谢大蛇。。
一直被误导了。。。
我一直在找#2 0x0000000000401604 in main (argc=Cannot access memory at address 0x7fff3834371f
关于这个的错误。。。
:em20 :em20 :em20
再次感谢~~!
回复

回到 “C/C++/Java”