为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
料青山看我应如是 2018-11-09 11:15:54
#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;}
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

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

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

 

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


查看完整回答
反对 回复 2018-11-14
?
噜噜哒

TA贡献1784条经验 获得超7个赞

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


查看完整回答
反对 回复 2018-11-14
  • 2 回答
  • 0 关注
  • 660 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信