GDI+ new建立FontFamily指针后用delete出错的问题和解决方法
2017-10-21 13:32
549 查看
在使用GDI+时,我们有时用new建立某些类的指针,在用delete释放内存时会出现异常,如下面的代码:
上面代码运行,delete会出错,通过断点发现异常点如下图:
由红线可知代码异常是出现在删除一个对象(FontFamily)指针,而pFontFamily是一个FontFamily对象数组指针,
解决方法是把:
delete pFontFamily;改成:
delete []pFontFamily;
用new建立其它类指针在delete时出错也是,要注意你是建立的对象指针(p=new FontFamily)还是对象数组指针(p=new FontFamily[count]),
对象指针用:delete p
对象数组指针用delete []p
FontFamily fontFamily(L"Arial"); Gdiplus::Font font(&fontFamily, 8, FontStyleRegular, UnitPixel); RectF rectf(10.0f, 10.0f, 500.0f, 500.0f); SolidBrush solidbrush(Color(255, 0, 0, 0)); INT count = 0; INT found = 0; WCHAR familyName[LF_FACESIZE]; WCHAR* familyList = NULL; FontFamily* pFontFamily = NULL; InstalledFontCollection installedFontCollection; count = installedFontCollection.GetFamilyCount(); pFontFamily = new FontFamily[count]; installedFontCollection.GetFamilies(count, pFontFamily, &found); familyList = new WCHAR[count*(sizeof(familyName) + 3)]; ZeroMemory(familyList, count*(sizeof(familyName) + 3)); for (INT j = 0; j < count; ++j) { pFontFamily[j].GetFamilyName(familyName); StringCchCatW(familyList, count*(sizeof(familyName) + 3), familyName); StringCchCatW(familyList, count*(sizeof(familyName) + 3),L", " ); } gs->DrawString(familyList, -1, &font, rectf, NULL, &solidbrush); delete pFontFamily; delete familyList;
上面代码运行,delete会出错,通过断点发现异常点如下图:
由红线可知代码异常是出现在删除一个对象(FontFamily)指针,而pFontFamily是一个FontFamily对象数组指针,
解决方法是把:
delete pFontFamily;改成:
delete []pFontFamily;
用new建立其它类指针在delete时出错也是,要注意你是建立的对象指针(p=new FontFamily)还是对象数组指针(p=new FontFamily[count]),
对象指针用:delete p
对象数组指针用delete []p
相关文章推荐
- 在建立与服务器连接时出错问题的解决方法
- 一个关于指针的问题,问题很简单,但容易出错,希望大家提出好的解决方法~~~
- 关于.net framework 3.5安装出错的问题--解决方法!
- Linq to SQL Delete时遇到问题的解决方法
- [对象和类型]8.C#构造函数,怎样用静态方法解决私有构造函数造成的不能new的问题?
- 彻底解决"停用连接出错"问题的两种方法
- TOAD8.3.5 在SQL Editor 中编辑是Backspace键 Delete 键删除失效的问题解决方法
- 在SUSE上安装build Forge出错, 解决方法:xinetd的启动问题 start restart failed
- 网站发布不能建立名为“Images”文件的问题的解决方法
- linux下用php调用PDO链接出错问题 pdo未加载解决方法
- 用sql server2000,vs 2005 时提示在建立与服务器的连接时出错 解决方法
- 关于载入地形出错的问题解决方法
- 编程技巧之:双击VC对话框提示cannot add new member以及类向导中没有已经建立的类的解决方法
- 我在安装TFS 2008的时候遇到的问题以及解决方法一sharepoint 安装 命令建立应用程序和站点集
- 解决进系统【加载C:/windows/system32/*.dl出错,找不到指定模块】之类问题的方法
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法 (转)
- xml中文出错问题解决方法
- SQL在建立与服务器的连接时出错的解决方法
- xml中文出错问题解决方法