看流星社区

 找回密码
 注册账号
查看: 2216|回复: 0

CNoTrackObject类 和new delete操作符的重载

[复制链接]

该用户从未签到

发表于 2017-6-2 13:28:33 | 显示全部楼层 |阅读模式
没有跟踪信息,没有调试信息,没有大小信息的简单的数据内存 重载了new和delete操作符


头信息:
class CNoTrackObject{
public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量
        void* operator new(size_t nSize);
        void operator delete(void*);
        virtual ~CNoTrackObject(){}
};


实现:
void* CNoTrackObject:perator new(size_t nSize)
{
        //申请一块内存
        void* p = ::GlobalAlloc(GPTR , nSize);
        return p;
}

void CNoTrackObject:perator delete(void* p)
{
        if (p != NULL)
        {
                ::GlobalFree(p);
        }
}


使用过程
struct MyThreadData:public CNoTrackObject
{
        MyThreadData* pNext;
        int nShortData;
};
for (int i=0;i<10;i++)
        {
                pData = new MyThreadData;
                pData->nShortData = i;
                list.AddHead(pData);
        }

        //遍历链表,释放MyThreadData对象占用的空间
        pData = (MyThreadData*)list.GetHead();
        while(pData != NULL)
        {
                MyThreadData* pNextData = pData->pNext;
                printf("The value is %d\n",pData->nShortData);
                delete        pData;
                pData = pNextData;
        }
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 13:30

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表