#include <iostream>
using namespace std;
class A
{
char *name;
public:
A(char *a=”wang”){name=new char;name=a;}
~A(){
delete name;
cout<<“s”<<endl;
}
void s(){delete name;}
void show(){cout<<name<<endl;}
};
int main()
{
A b(“zhao”),c;
b.show();
c.show();
return 0;
}
using namespace std;
class A
{
char *name;
public:
A(char *a=”wang”){name=new char;name=a;}
~A(){
delete name;
cout<<“s”<<endl;
}
void s(){delete name;}
void show(){cout<<name<<endl;}
};
int main()
{
A b(“zhao”),c;
b.show();
c.show();
return 0;
}
解决方案
15
{name=new char;name=a;}
================================
改
name = new char[10]; strcpy(name,a);
================================
改
name = new char[10]; strcpy(name,a);
5
既然用C++了,何不用std::string?
20
delete出错的时候,你首先要检查new是不是出了问题,最常见的就是new的空间过小,破坏了堆空间,导致释放出错
20
name=new char;name=a;
你这里只是单纯的指针赋值,让name指向分配的内存之后又让name重新指向a,最后你释放的是a的地址而不是分配的地址当然出错了
假如需要字符串复制,使用strcpy
你这里只是单纯的指针赋值,让name指向分配的内存之后又让name重新指向a,最后你释放的是a的地址而不是分配的地址当然出错了
假如需要字符串复制,使用strcpy