问一个封装函数的方法

swlilike 2014-08-26 03:37:25
封装一个数据库的类,其中有一个函数是
char* get(char *key)
获取的数据内存申请释放的。我想了3个办法
1,get 和free配对使用。 不过得手动调用free,不方便
2, get (char* key,CXXX *result) 自己传递进去所需空间
3,每次get,new一段空间出来, 下次get的时候检测上次有没有释放,没释放就释放掉。 再重新new。(这种要求多线程要注意,还有get之后立刻用,不能留指针)


C++不能像java c# python等 随便申请, 不用担心释放的问题。
可是要封装的好用写,还有其他办法吗?
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2014-08-27
  • 打赏
  • 举报
回复
引用 3 楼 swlilike 的回复:
[quote=引用 2 楼 jianwen0529 的回复:]

char strKey[128];
CXXX result;
get (strKey,result);
// get (char* key,CXXX &result)原型,换个方法就不需要释放之类的了
// 又或者get (std::string key,CXXX &result)
这个虽然能完美解决,可是感觉不太好[/quote] 你既然用C++了,就不要怕跟内存打交道。 new delete是有一些原则的,谁申请的就应该谁释放,而不是这里申请,让别的对象释放(否则更加难以控制释放)。 像你这个情形,应该是在调用get之前new出来,然后不使用了就delete 函数里面不要做new的操作。 再者就是使用非指针来咯
ybjx111 2014-08-26
  • 打赏
  • 举报
回复
char* get(char *key) 可以把这个函数改成这样 int get(char *key,char* out);
swlilike 2014-08-26
  • 打赏
  • 举报
回复
引用 4 楼 j8daxue 的回复:
既然都用到类了, 就用C++ style字符串
不只是字符串哦~还可能是数据结构。 有详细的建议吗
j8daxue 2014-08-26
  • 打赏
  • 举报
回复
既然都用到类了, 就用C++ style字符串
swlilike 2014-08-26
  • 打赏
  • 举报
回复
引用 2 楼 jianwen0529 的回复:

char strKey[128];
CXXX result;
get (strKey,result);
// get (char* key,CXXX &result)原型,换个方法就不需要释放之类的了
// 又或者get (std::string key,CXXX &result)
这个虽然能完美解决,可是感觉不太好
幻夢之葉 2014-08-26
  • 打赏
  • 举报
回复

char strKey[128];
CXXX result;
get (strKey,result);
// get (char* key,CXXX &result)原型,换个方法就不需要释放之类的了
// 又或者get (std::string key,CXXX &result)
Saleayas 2014-08-26
  • 打赏
  • 举报
回复
自己封装一个 智能指针。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧