gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:53:44 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com