学生.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/

10-12 17:10