[C/C++]_[初级]_[关于Gdiplus::Bitmap使用的注意事项]
来源:互联网 发布:linux命令选项格式 编辑:程序博客网 时间:2024/05/21 20:30
场景
1.我们一般使用 Gdiplus::Bitmap 来存储图像数据, 使用shared_ptr来对 Gdiplus::Bitmap 进行封装, 达到使用引用计数共享图像对象, 减少内存占用的目的.
2.偶尔的时候如果 Gdiplus::Bitmap 使用不当释放时会出现崩溃错误, 什么原因呢?
说明
1.原因是 Gdiplus::Bitmap* 不可以在 Gdiplus::GdiplusShutdown
调用后再 delete, 不然会崩溃.
2.崩溃位置, 可见在调用delete bitmap对象时崩溃.
private: virtual void _Destroy() { // destroy managed resource delete _Ptr; }
例子
// test-gdiplus.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <GdiPlus.h>#include <vector>#include <memory>std::vector<std::shared_ptr<Gdiplus::Bitmap>> gImages;int _tmain(int argc, _TCHAR* argv[]){ ULONG_PTR m_gdiplusToken; Gdiplus::GdiplusStartupInput m_gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken,&m_gdiplusStartupInput,NULL); // 创建 Bitmap auto bitmap = new Gdiplus::Bitmap(200,200); gImages.push_back(std::shared_ptr<Gdiplus::Bitmap>(bitmap)); Gdiplus::GdiplusShutdown(m_gdiplusToken); return 0;}
0 0
- [C/C++]_[初级]_[关于Gdiplus::Bitmap使用的注意事项]
- [C/C++]_[初级]_[关于static修饰符的说明]
- [C/C++]_[初级]_[关于std::string的compare陷阱]
- [C/C++]_[初级]_[malloc-calloc-new的区别]
- [C/C++]_[初级]_[编程容易犯错的地方]
- [C/C++]_[初级]_[static_cast,reinterpret_cast,dynimic_cast的使用场景和区别]
- [C/C++]_[初级]_[原子操作]
- [C/C++标准库]_[初级]_[使用string stream]
- [C/C++11]_[初级]_[使用enumerations类型]
- [Object c]_[初级]_[NSString常用方法的总结]
- [C/C++标准库]_[初级]_[std::map的使用细节]
- [C/C++标准库]_[初级]_[函数对象functor的使用]
- [C/C++标准库]_[初级]_[优先队列priority_queue的使用]
- [C/C++11]_[初级]_[使用std::tuple元组-固定大小的集合]
- [Object C]_[初级]_[NSArray排序]
- [C++/object c]_[初级]_[std::map容器的使用总结和NSDictionary词典使用总结]
- C++_运算符重载的注意事项
- C++_运算符重载的注意事项
- LMS算法摘要
- EditText+RecycleView实现搜索功能之一:对EditText内容变化实时监听
- JS之原型链
- linux下批量放缩图片
- maven错误
- [C/C++]_[初级]_[关于Gdiplus::Bitmap使用的注意事项]
- Android Studio安装过程中Building gradle project info 一直不动
- 我眼中的MVC模式
- 【模拟】洛谷 P1067 多项式输出
- BZOJ 1483: [HNOI2009]梦幻布丁 链表或者平衡树启发式合并
- 异常处理
- greenDAO3 中使用关系
- 汉诺塔 (杭电acm2064)
- jQuery之Callbacks函数功能测试