请问这个strcpy错在哪里?编译成功,运行出错0xc00000005

gsl131415926 2017-03-29 05:45:09
#include <iostream>
#include <string>
using namespace std;
class Class1
{
public:
char * name;
int age;
Class1(char *n=" ",int a=0 )
{
name=n;
age=a;
}
};

int main() {
Class1 node1("qwety",20);
strcpy(node1.name,"ok");
cout<<node1.name<<' '<<node1.age<<endl;
return 0;
}
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
棉猴 2017-03-30
  • 打赏
  • 举报
回复
问题出在
strcpy(node1.name,"ok");
行代码上,此时node1.name的值是0x00417804,而这个地址是“qwety”,也就是字符串常量的地址

对字符串常量进行赋值(strcpy),那肯定会报错。
可以改为
char name[10] = "qwety";
Class1 node1(name,20);
接下来strcpy(node1.name,"ok");就是对字符数组name进行赋值,这样就不报错了
zycxnanwang 2017-03-29
  • 打赏
  • 举报
回复
总的来说, 关键差错就是你类里面定义了一个字符指针,但没有分配空间,就直接赋值,造成野指针错误 0xc00000005报错的情况, 绝大多是你指针未分配内存就赋值
Chin__Lee 2017-03-29
  • 打赏
  • 举报
回复
你的"qwety",是字符串常量,不能被修改的,所以strcpy肯定报错; 即使你先声明一个字符串指针,初始化时候用常量赋值,还是不行。你的构造函数如果想调用成功的话,只能传入一个字符串数组指针,或者动态分配内存后的指针。

64,645

社区成员

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

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