std 里面的vector疑惑
本人在使用vector 数组的时候发现了一个怪现象,自己不能解释,下以下疑惑
我发现的问题可以表示成为:
当我在vector里面放有对象(在析构函数里面有delete操作数据成员)的时候,发生了程序异常,推出
具体可以看一下代码:
/***********************************************************/
#include <vector>
#include <iostream>
#include <string>
using namespace std;
class Tclass
{
private:
char *pChar;
public:
/*默认构造函数*/
Tclass()
{
pChar = NULL;
}
Tclass(char *_pChar,int length);
void display();
~Tclass();
};
Tclass::Tclass(char *_pChar,int length){
if ( _pChar == NULL ){
cout << "字符指针不能为空!"<<endl;
return;
}
else{
pChar = new char[length+1];
memset(pChar,0,length+1);
memcpy(pChar,_pChar,length);
}
}
Tclass::~Tclass()
{
if (pChar !=NULL)
delete[] pChar;
};
void Tclass::display(){
cout<<pChar<<endl;
}
void main(){
vector<Tclass> v_Tclass;
v_Tclass.clear();
for (int i =0 ;i<4; i++){
v_Tclass.push_back(Tclass("test",4));
}
vector<Tclass>::iterator p;
/*dispaly all*/
for( p = v_Tclass.begin();p!=v_Tclass.end();p++)
{
p->display();
}
};
在vc环境还是在unix g++ huanjing下都出现了程序异常退出,你可以自己在vc下面跑一下看看