請在這個節目有一個一目瞭然:複製構造演示(崩潰......情況2)
class CopyCon
{
public:
char *name;
CopyCon()
{
name = new char[20];
name = "Hai";//_tcscpy(name,"Hai");
}
CopyCon(const CopyCon &objCopyCon)
{
name = new char[_tcslen(objCopyCon.name)+1];
_tcscpy(name,objCopyCon.name);
}
~CopyCon()
{
if(name != NULL)
{
delete[] name;
name = NULL;
}
}
};
int main()
{
CopyCon obj1;
CopyCon obj2(obj1);
cout<<obj1.name<<endl;
cout<<obj2.name<<endl;
}
這個程序崩潰的執行。錯誤:「表達式:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)」
如果我使用aasignment操作符將其命名爲「Hai」,那麼它會崩潰。當我使用string func _tcscpy將「Hai」分配給名稱時,它的工作完美無缺。有人可以解釋爲什麼這樣嗎?
這是一種有趣的只有10K的聲譽用戶如何發帖回答到你的問題。基本上他們都這樣說。這是否意味着在達到10k的聲譽時可以獲得更高層次的知識? – DaClown 2010-06-07 08:30:57
刪除前無需檢查空值。傳遞NULL來刪除是可以的。 – 2010-06-07 08:36:13
你爲什麼在'char'數組中使用'_tcslen'和'_tcscpy'? – 2010-06-07 09:00:48