c++如何自动生成变量名
来源:互联网 发布:淘宝云客服平台 编辑:程序博客网 时间:2024/05/17 08:31
最近在完善当前项目指针自动管理释放的问题,尽量避免代码里面任何一个退出的地方都要亲笔写一遍释放,以后谁不小心加了个return就变成内存泄露了,所以类似智能指针的做法来自动管理指针,释放资源。
malloc指针的自动管理代码:
class _AutoFree{
void *pt;
private:
void operator=(const _AutoFree& _at){};
public:
_AutoFree(void* _pt):pt(_pt){}
~_AutoFree(){_check_pointer_malloc(pt);};
};
#define _pt_auto_free(pt) \
_AutoFree _af(pt);
使用:
char *buf = (char*)malloc(1024);
_pt_auto_free(_buf);
如果这样写,局限性在哪里?如果在同一个scope里面有另一个buf1也需要自动管理你? 发生命名冲突啦,想想法子解决!
改善:
#define _pt_auto_free2(pt, ...) \
_AutoFree _arg##__VA_ARGS__(pt);
#define _pt_auto_free(pt) _pt_auto_free2(pt, __LINE__)
char *buf = (char*)malloc(1024);
char *buf2 = (char*)malloc(1024);
_pt_auto_free(_buf);
_pt_auto_free(_buf2);
编译打开预处理文件,会发现生成类似这样的代码:
_AutoFree _arg784(_buf);;
_AutoFree _arg785(_buf);;
上面是在指针生产后所使用的,那如果你拿到一个指针变量后,有可能在下文的某些位置某些条件下申请内存,比如:
char *buf = NULL;
_pt_auto_free(_buf); //肯定不适合!
这样的话,如果不关心下文的代码逻辑,能做智能指针管理呢? 可以的,比如:
_ppt_auto_free(&_buf); 指针的指针,明白了吗?
OVER.
- c++如何自动生成变量名
- eclipse自动生成变量名快捷键
- js如何动态循环生成变量名?
- 动态生成变量名
- eclipse中编写代码时如何自动提示变量名?
- Eclipse自动生成变量名声明(按方法返回值为本地变量赋值)
- C语言变量名
- C获取变量名
- Python 动态生成变量名
- 如何解决eclipse、MyEclipse中变量名自动补全问题
- c语言变量名规则
- c/c++打印变量名
- Python 如何根据变量得到变量名
- 自动生成Jni中Java调用C语言实现的签名函数名
- 在调试时自动输出变量名
- Eclipse自动补全变量名
- eclipse怎样自动补全变量名
- 如何通过C语言自动生成MAC地址
- spring整合quartz时提示表或视图不存在错误解决方法
- 关于NTP漏洞
- Mysql慢查询
- iframe子页面让父页面进行重定向
- 蛇形三角
- c++如何自动生成变量名
- contentprovider的示例代码
- C++ char*,const char*,string的相互转换
- 【Unity】射线中LayerMask参数的使用方式
- 创建一个大小为400*400的三通道的RGB图像。将它的全部元素置0.使用指针算法将以(100,100)与(300,300)为项点绘制一个绿色的矩形。
- 运行Scala应用 Main方法
- Xcode更新之后插件失效
- 在VirtualBox虚拟机中运行ubuntu 常见问题汇总
- 一道简单的题学到的东西