C++之CNoTrackObject类和new delete操作符的重载实例
本文实例讲述了C++中CNoTrackObject类和newdelete操作符的重载,分享给大家供大家参考。具体如下:
头信息:
classCNoTrackObject{
public://在此出过错,没有加public默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量
void*operatornew(size_tnSize);
voidoperatordelete(void*);
virtual~CNoTrackObject(){}
};
实现方法如下:
void*CNoTrackObject::operatornew(size_tnSize)
{
//申请一块内存
void*p=::GlobalAlloc(GPTR,nSize);
returnp;
}
voidCNoTrackObject::operatordelete(void*p)
{
if(p!=NULL)
{
::GlobalFree(p);
}
}
使用过程如下:
structMyThreadData:publicCNoTrackObject
{
MyThreadData*pNext;
intnShortData;
};
for(inti=0;i<10;i++) { <spanstyle="color:#ff0000;">pData=newMyThreadData;</span> pData->nShortData=i; list.AddHead(pData); } //遍历链表,释放MyThreadData对象占用的空间 pData=(MyThreadData*)list.GetHead(); while(pData!=NULL) { MyThreadData*pNextData=pData->pNext; printf("Thevalueis%d\n",pData->nShortData); <spanstyle="color:#ff0000;">deletepData;</span> pData=pNextData; }