当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : (cxx) std::string转char *的问题
帖子发表于 : 2009-08-29 16:13 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
代码:
>> vim main.cc
>> c++ main.cc
>> ls
a.out  main.cc
>> ./a.out
段错误
>> cat main.cc
#include <cstring>
#include <string>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
        string cmdstr = "...";
        char *str;
        strcpy(str, cmdstr.c_str());
        cout << str << endl;
        return 0;
}
>>


ps:
引用:
>> c++ main.cc -g
>> gdb ./a.out
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) l
1 #include <cstring>
2 #include <string>
3 #include <iostream>
4 using namespace std;
5
6 int main(int argc, char *argv[])
7 {
8 string cmdstr = "...";
9 char *str;
10 strcpy(str, cmdstr.c_str());
(gdb)
11 cout << str << endl;
12 return 0;
13 }
14
(gdb)
Line number 15 out of range; main.cc has 14 lines.
(gdb) b 9
Breakpoint 1 at 0x400ba4: file main.cc, line 9.
(gdb) b 11
Breakpoint 2 at 0x400bb9: file main.cc, line 11.
(gdb) b 10
Note: breakpoint 1 also set at pc 0x400ba4.
Breakpoint 3 at 0x400ba4: file main.cc, line 10.
(gdb) r
Starting program: /home/tusooa/develop/cxx_tests/a.out

Breakpoint 1, main (argc=1, argv=0x7fff267656e8) at main.cc:10
10 strcpy(str, cmdstr.c_str());
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x00007fd51daac7a0 in strcpy () from /lib/libc.so.6
(gdb) quit
The program is running. Exit anyway? (y or n) y

怎么回事?


_________________
代码:
] ls -ld //


页首
 用户资料  
 
2 楼 
 文章标题 : Re: (cxx) std::string转char *的问题
帖子发表于 : 2009-08-29 16:37 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
char *str; 只是声明了一个指针,还没申请空间,就往里面塞东西,不段错误才怪。


_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 : Re: (cxx) std::string转char *的问题
帖子发表于 : 2009-08-29 16:56 
头像

注册: 2008-12-05 20:43
帖子: 97
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
:em04 char str[10];。。。我也曾这么写过。。。


_________________
道是何物,直教,生死相许?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译