首页 新闻 会员 周边

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

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-11 18:46

#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;
}

梦幻轮回的主页 梦幻轮回 | 初学一级 | 园豆:193
提问于:2017-03-25 18:14
< >
分享
最佳答案
0

m_data在构造函数中初始化m_data=NULL

copyData:需要进行m_data的销毁,否者每次调用会造成内存泄露

 

这个类只是练习用还行,一般的产品中不会用到这种形式,std::string已经有类似的处理

收获园豆:10
2012 | 高人七级 |园豆:21230 | 2017-03-27 12:00
其他回答(1)
0

一般遇到指针变量时,好的习惯是将它在声明时就初始化为NULL。

fcyh | 园豆:568 (小虾三级) | 2017-04-04 13:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册