Student.h傳遞字符指針到一個函數,動態地分配存儲器
class Student
{
private:
char m_sHouse[64];
public:
Student(void);
~Student(void);
void getHouse(char *hName);
void setHouse(char *hName);
}
Student.cpp
void Student::setHouse(char *hName)
{
strcpy(m_sHouse, hName);
}
void Student::getHouse(char *hName)
{
if (m_sHouse != NULL)
{
hName = new char[strlen(m_sHouse)+1];
strcpy(hName, m_sHouse);
}
}
在主:
student.getHouse(house);
if (strcmp(house, "house") == 0)
cout <<"\tCorrectly returned the student house: " << house<< endl;
setHouse(char *hName)
套student->m_sHouse
等於「房子」。
我的問題:
當內部,它的作用,因爲它應該設置hName
到 「家」。但是當控制傳遞給函數時,我的動態分配的內存被釋放,所以當我strcmp在主,我的程序崩潰(我最終比較NULL指針)。
1.它不釋放。 2.不要這樣做。 –
給出的答案將解決這個問題,但我可以問你爲什麼需要這樣做嗎?因爲你在混合不同的風格,所以在C++中使用'strcpy'通常是不被讚賞的。你有沒有嘗試過使用'std:string's? –
雖然瞭解代碼崩潰的原因非常重要,但最好切換到C++字符串以完全避免此問題。 – jlunavtgrad