c++ - 将字符指针传递给函数并动态分配内存

标签 c++ class pointers dynamic-allocation

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

相关文章:

c++ - 使用 HashMap 将点划分为子区域

c++ - 透视矩阵似乎不对

c++ - 左移一个特定的编号。的 1s 具体编号次

javascript - 我如何引用刚刚用 Javascript 制作的特定 html 元素并获取其值?

java - ClassName 为字符串时如何处理 "new Class"?

c - 移动指针并重新分配,C

c++ - C++错误的参数类型-函数指针

c++ - std::map 具有不同数据类型的值

java - 聊天服务器客户端有时无法看到同一服务器上其他客户端的消息

c - 我对此感到困惑。数组内容不会保持不变吗?