学生.h
class Student
{
private:
char m_sHouse[64];
public:
Student(void);
~Student(void);
void getHouse(char *hName);
void setHouse(char *hName);
}
学生.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
等于“house”。我的问题:
当在
getHouse(char *hName)
内部时,它会按照它应该的方式运行,将 hName
设置为“house”。但是当控制权传出函数时,我动态分配的内存被释放,所以当我在 main 中 strcmp 时,我的程序崩溃(我最终比较了一个 NULL 指针)。 最佳答案
Nick,正确的解决方案是您知道 hName
已经由类的用户(Dr. Coleman)分配。您只需要将 strcpy
放入字符数组中。
简单的说:
void Student::getHouse(char *hName)
{
strcpy(hName, m_sHouse);
}
关于c++ - 将字符指针传递给函数并动态分配内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11299325/