1. -fnew-abi选项支持空基类优化.
2. tnetbuffer.h m_pResolver->GetSize(strValue) 可以改进.
3. TRefAttributeSet类不能Put入键值相同的两个TAttributeSet或者TRefAttributeSet对象.
4. TVarArray的析构函数最好加上if(m_pArray!=NULL)和if(m_pUBounds!=NULL)的条件.
5.
tattribute.cpp
TAttribute::TAttribute(const IString &strAttrID, const TVarObject &varObj)
XNew(pVar, TVarObject(varObj));
m_Values.Append(pVar); //失败时只会返回NULL, 不会throw出Exception
有可能出现XNew(pVar, TVarObject(varObj));成功 但然后m_Values.Append(pVar)失败的情况,
这样pVar的内存无法释放, 虽然可能性不是很大, 但毕竟是有可能出现的.
void TAttribute::Clone(const TAttribute &right)里有同一处.
tattrliststrategy.cpp
TAttribute &TAttrListStrategy::Put(const IString &strAttrID, TVarObject *varObj, bool bAllowDup)
53行: XNew(pAttribute, TAttribute(strAttrID, varObj));
attr = m_Attributes.Append(pAttribute);
tattrarraystrategy.cpp
TAttribute & TAttrArrayStrategy::Put(const IString &strAttrID, TVarObject *varObj, bool bAllowDup)
50行: XNew(pAttribute, TAttribute(strAttrID, varObj));
m_Attributes.push_back(pAttribute);
应当改为:
XNew(pAttribute, TAttribute(strAttrID, varObj));
try{
m_Attributes.push_back(pAttribute);
}catch()
{
delete pAttribute;
throw ...
}
tattrhashstrategy.cpp
TAttribute &TAttrHashStrategy::Put(const IString &strAttrID, TVarObject *varObj, bool bAllowDup)
58行: XNew(pAttr, TAttribute(strAttrID, varObj));
m_Container->Store(strAttrID, pAttr);
应当改为:
XNew(pAttr, TAttribute(strAttrID, varObj));
if( m_Container->Store(strAttrID, pAttr)==false )
{
delete pAttr;
throw ...
}
thashmap.h
193行: pNode = new THashNode<TKey, TNode>( Key, Object );
之后最好判断pNode!=NULL
tnetbuffer.cpp
86行: void *tmp = new char[nLen];
319行:
void *pData = new char[nNewSize];
后面最好加pData!=NULL的判断.
6. TAttributeSet put的时侯除非使用TAttribute &Put(const IString &strAttrID, TVarObject *varObj)接口,
否则一定都要new两次TVarObject对象, clone操作造成了内存复制开销, 在put比较大的string或者另一个
attributeset时问题较严重.
分享到:
相关推荐
STL的核心思想是泛型编程,使得代码可以应用于多种数据类型,提高了代码的可重用性和效率。 除了STL,C++还提供了标准库,例如iostream库,用于输入/输出操作,如cin和cout,方便进行文本交互;fstream库,用于文件...
在C++编程中,类库开发是至关重要的一个环节,它允许程序员创建可重用的代码模块,提高软件开发的效率和质量。本教程“C++类库开发详解”将引领你深入理解如何构建和使用自己的C++类库。下面我们将详细探讨C++类库...
《Visual C++基础类库参考大全》是一本深入探讨Visual C++编程的宝贵资源,尤其对MFC(Microsoft Foundation Classes)框架的详细讲解是其核心价值所在。MFC是微软为Windows开发提供的一套C++类库,它封装了Windows ...
下面我们将深入探讨C++类库的一些核心概念和常用库,以及如何有效地使用它们。 C++类库是预先编写好的函数和对象集合,它们被封装在头文件中,供开发者在自己的项目中调用。使用类库可以极大地提高开发效率,因为...
通过阅读《C++类库参考大全》以及其中的“ts005080.pdf”和“ts005080.zip”文件,开发者可以深入理解C++类库的使用方法,提升在Windows环境下开发C++应用的能力。这是一份宝贵的资料,对于任何希望在C++领域有所...
在跨语言编程中,有时我们需要在C++代码中调用C#编写的类库,以利用C#提供的功能,如.NET Framework丰富的库支持、垃圾回收等。本文将深入探讨如何在C++中调用C#类库,以及涉及到的关键技术。 首先,C#类库是以DLL...
这种方法不仅能够有效地解决C#调用C++类库的问题,而且还能保持原有的C++类库不变,确保其稳定性和兼容性不受影响。同时,通过适当调整C++类库中的回调函数,可以进一步提高解决方案的整体质量和可用性。
《C和C++类库手册说明》是一份详尽的编程资源,主要涵盖了C++的I/O库、string库、map库、queue库、stack库,以及C的memory库和math库等多个核心库的使用方法和功能介绍。这份文档通常以CHM(Compiled Help Manual)...
C++类库,很好用,非常全的C++类库,C++各大有名库的介绍
C++标准类库手册(英语)
C及C++函数和类库是编程者在开发过程中不可或缺的参考资料,它们涵盖了语言的核心功能以及标准库的详细信息。这两个CHM( Compiled HTML Help,编译后的HTML帮助文件)分别提供中英文版本,便于不同语言背景的开发者...
在C++/CLI项目中,我们需要添加对C#类库的引用,这会生成一个元数据导入库(.lib文件),C++/CLI编译器会使用这个库来解析C#类库的类型信息。 5. 使用`cli::interop`命名空间: 在C++/CLI代码中,我们需要使用`...
EasyX是专为C及C++开发者设计的一款图形绘制类库,它使得在VC++6.0环境下进行图形编程变得更加简单。这个库的核心目标是提供一个直观、易用且功能丰富的接口,帮助程序员快速实现图形界面和交互式图形应用。 EasyX...
C++类库大全(实用工具)。
在C++编程中,多线程技术是一种关键的并发处理机制,它允许程序同时执行多个独立的任务,从而提高系统的效率和响应性。C++11及其后续标准引入了内置的多线程支持,使得开发者可以直接在标准库中利用多线程功能。本文...
10. **调试与优化**:了解如何利用Visual Studio的调试工具以及性能分析工具对MFC程序进行调试和优化,是提升代码质量和效率的关键步骤。 学习《Visual C++ 类库深入剖析》,不仅可以深化对C++语言的理解,还能掌握...