我正在使用redis c++ 客户端来开发客户端 API,这些 API 将在 redis 集群上执行 CRUD 操作。redisReply
每当执行命令时,我使用的客户端库都会返回结构的指针。稍后,我希望使用freeReplyObject()
指针上的函数来释放内存。
为了开发一种更安全的方式,以便我无意中不会freeReplyObject()
在无效指针上使用,我正在考虑编写一个包装类:
class reply_wrapper
{
public:
redisReply* p_reply;
reply_wrapper(redisReply* reply = NULL)
{
p_reply=reply;
}
~reply_wrapper()
{
freeReplyObject(p_reply);
}
};
每当我将在服务器上执行命令时,我都在考虑构建此类的对象。我认为通过这样做,我将不再需要手动释放内存。这种方法在这里是否正确,是否有更好的方法?
请注意freeReplyObject()
处理null
指针的大小写。
我得到了几乎所有关于使用共享指针/唯一指针的建议。当我检查在线可用的示例并查看它如何适合我的场景(自定义析构函数)时,我还想知道我处理上述内存的方法是否存在根本性错误。