0x559bd2e9 (msvcr100d.dll) 处有未经处理的错误: 0xC0000005: 写入位置 0x00bb7864 时发生
0x559bd2e9 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00bb7864 时发生
单步执行报错:max.exe 中的 0x559bd2e9 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00bb7864 时发生访问冲突
#include<iostream>
using namespace std;
#include<cstring>
struct stringy {
char *str;
int ct;
};
const int MAX=100;
void show(const stringy beany,int n=1);
void show(const char *,int n=1);
void set(stringy &beany,char str[]);
int main()
{
stringy beany={"abc",5};
char testing[MAX]="reality isn't what it used to be. ";
set(beany,testing);
show(beany);
show(beany,2);
testing[0]='D';
testing[1]='u';
show(testing);
show(testing,3);
show("Done! ");
return 0;
}
void show(const stringy beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany.str;
cout<<endl;
}
void show(const char *beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany;
cout<<endl;
}
void set(stringy &beany,char str[])
{
char *ps=new char [MAX];
ps = str;
strcpy(beany.str,ps);
cout<<"set the ct of beany: ";
delete [] ps;
cin>>beany.ct;
}
百度上说可能是因为有为初始化的指针什么的,但是我看指针部分看不出问题来呀。。。只能单步执行到main函数的前两句就出错了
------解决方案--------------------
strcpy(beany.str,ps);str指向的是一个常量地址,不能strcpy,或者你把俩参数写反了。
------解决方案--------------------
char *ps=new char [MAX];
ps = str; // 刚刚new了一个空间,你这一句就把指针给丢了,后边还怎么搞啊
------解决方案--------------------
单步执行报错:max.exe 中的 0x559bd2e9 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00bb7864 时发生访问冲突
#include<iostream>
using namespace std;
#include<cstring>
struct stringy {
char *str;
int ct;
};
const int MAX=100;
void show(const stringy beany,int n=1);
void show(const char *,int n=1);
void set(stringy &beany,char str[]);
int main()
{
stringy beany={"abc",5};
char testing[MAX]="reality isn't what it used to be. ";
set(beany,testing);
show(beany);
show(beany,2);
testing[0]='D';
testing[1]='u';
show(testing);
show(testing,3);
show("Done! ");
return 0;
}
void show(const stringy beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany.str;
cout<<endl;
}
void show(const char *beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany;
cout<<endl;
}
void set(stringy &beany,char str[])
{
char *ps=new char [MAX];
ps = str;
strcpy(beany.str,ps);
cout<<"set the ct of beany: ";
delete [] ps;
cin>>beany.ct;
}
百度上说可能是因为有为初始化的指针什么的,但是我看指针部分看不出问题来呀。。。只能单步执行到main函数的前两句就出错了
------解决方案--------------------
strcpy(beany.str,ps);str指向的是一个常量地址,不能strcpy,或者你把俩参数写反了。
------解决方案--------------------
char *ps=new char [MAX];
ps = str; // 刚刚new了一个空间,你这一句就把指针给丢了,后边还怎么搞啊
------解决方案--------------------
#include<iostream>
using namespace std;
#include<cstring>
struct stringy {
char *str;
int ct;
};
const int MAX=100;
void show(const stringy beany,int n=1);
void show(const char *,int n=1);
void set(stringy &beany,char str[]);
int main()
{
stringy beany={"abc",5};
char testing[MAX]="reality isn't what it used to be. ";
set(beany,testing);
show(beany);
show(beany,2);
testing[0]='D';
testing[1]='u';
show(testing);
show(testing,3);
show("Done! ");
return 0;
}
void show(const stringy beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany.str;
cout<<endl;
}
void show(const char *beany,int n)
{
for(int i=0;i<n;i++)
cout<<beany;
cout<<endl;
}
void set(stringy &beany,char str[])
{
//你都没有为beany.str分配内存空间就strcpy。。改成下边这样。。
beany.str = new char[MAX];
strcpy(beany.str, str);