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
「家」に等しいセット。
私の質問:
中に入ると、 「家」getHouse(char *hName)
に設定して、本来の動作をします。hName
しかし、制御が関数から渡されると、動的に割り当てられたメモリの割り当てが解除されるため、mainでstrcmpを実行すると、プログラムがクラッシュします(NULLポインターを比較することになります)。