C++问题,今天遇到的题,找错误。没有找出来。编译一下也可以运行。请教大神有什么问题?

#include <iostream>

using namespace std;

class TestClass {
char* m_data;
int m_size;
public:
TestClass(void)
{
m_size = 0;
}
~TestClass(void)
{
if (m_data)
delete[] m_data;
}

void copyData(const char* data, int _size)
{
m_data = new char[_size];
memcpy(m_data, data, _size);
m_size = _size;
}

int getDataSize(void) const
{
return m_size;
}

};

void showSize(TestClass a)
{
cout << "size = " << a.getDataSize() << endl;
}

int main()
{
const char* const szData = "ABC";

TestClass a;
a.copyData(szData,strlen(szData)+1);

showSize(a);

return 0;
}


料青山看我应如是
浏览 661回答 2
2回答

慕侠2389804

m_data在构造函数中初始化m_data=NULLcopyData:需要进行m_data的销毁,否者每次调用会造成内存泄露&nbsp;这个类只是练习用还行,一般的产品中不会用到这种形式,std::string已经有类似的处理

噜噜哒

一般遇到指针变量时,好的习惯是将它在声明时就初始化为NULL。
打开App,查看更多内容
随时随地看视频慕课网APP