警惕利用类的构造和析构函数来做资源分配释放时候,对临时变量的使用
来源:互联网 发布:室外地垫 知乎 编辑:程序博客网 时间:2024/05/29 14:37
有一个类
class CMiRegularPath{public: CMiRegularPath(LPCTSTR lpPath); ~CMiRegularPath(); operator LPCTSTR (); operator LPTSTR();protected: LPTSTR m_lpPathBuffer; LPCTSTR m_lpPath; LPCTSTR m_lpPathRegular;};
下面是调用
void func1(LPTSTR lpPointer){}void func2(LPCTSTR lpPointer){}void test{ func1(CMiRegularPath(_T("D:\\aa/AS"))); func2(CMiRegularPath(_T("D:\\aa/AS"))); LPTSTR lpP1 = CMiRegularPath(_T("D:\\aa/AS")); LPCTSTR lpP2 = CMiRegularPath(_T("D:\\aa/AS"));}
真相
test函数中前两个调用是对的,在func1和func2中能得到正确的字符串,后两个是错误的,执行完这一行后马上就会执行类的析构函数,所以lpP1,lpP2不会指向真正的字符串。
- 警惕利用类的构造和析构函数来做资源分配释放时候,对临时变量的使用
- RAII:在类的构造函数中分配资源,在析构函数中释放资源
- 函数内临时变量的释放时刻
- 释放资源的时候
- Java反射——对类内部函数、私有变量和构造函数的使用举例
- 变量的内存分配和释放
- 变量的内存分配和释放
- 变量的内存分配和释放
- 变量的内存分配和释放
- C++构造函数对类成员变量初始化,使用初始化列表和构造函数内部直接赋值 的区别
- 利用二叉树的思想来实现分配和释放内存方法
- 利用二叉树的思想来实现分配和释放内存方法
- 资源的分配与释放
- Python的构造函数和析构函数 对象的变量和类的变量不一样
- shell中用$来引用变量的值,但对变量赋值的时候无需使用$符号
- 关于构造函数析构函数以及成员变量内存分配顺序的一些问题
- c++ 使用动态内存分配的类需要显式复制构造函数,赋值构造函数,析构函数
- 深究跨dll的资源分配和释放问题
- 百度搜索URL参数含义
- Android内存管理机制之一:lowmemory killer
- 图解卸载eclipse插件的标准方法
- Unix编程之size_t、ssize_t .
- Exadata是什么?
- 警惕利用类的构造和析构函数来做资源分配释放时候,对临时变量的使用
- 算法导论第十五章--动态规划的变形(做备忘录的递归算法)
- apache 查看连接状态
- 正则表达式验证 邮箱 电话 非空
- hdu 2096 小明A+B
- MFC支持UNICODE问题//cannot open file mfc42u.lib问题解决
- kettle 转换配置
- C++标准转换运算符static_cast
- 关于Activity的onSaveInstanceState调用时机的说明