【发布时间】:2011-01-12 07:43:40
【问题描述】:
我看到很多 RAII 示例类都围绕着文件句柄。
我尝试将这些示例改编为字符指针,但运气不佳。
我正在使用的库具有获取字符指针地址的函数(声明为 get_me_a_string(char **x))。 这些函数为该字符指针分配内存,并留给库的最终用户在他们自己的代码中清理它。
所以,我的代码看起来像这样......
char* a = NULL;
char* b = NULL;
char* c = NULL;
get_me_a_string(&a);
if(a == NULL){
return;
}
get_me_a_beer(&b);
if(b == NULL){
if(a != NULL){
free(a);
}
return;
}
get_me_something(&c);
if(c == NULL){
if(a != NULL){
free(a);
}
if(b != NULL){
free(b);
}
return;
}
if(a != NULL){
free(a);
}
if(b != NULL){
free(b);
}
if(a != NULL){
free(b);
}
听起来 RAII 是我上面提到的这个烂摊子的答案。 有人可以提供一个简单的 C++ 类来包装 char* 而不是 FILE* 吗?
谢谢
【问题讨论】:
-
大多数分配内存的库都有释放它的功能。 (参见 XmStringCreate 和 XmStringFree)。你的图书馆有类似的释放功能吗?
-
是的,它确实有自己的免费功能,但由我来调用它。
标签: c++ memory-management raii resource-management