OpenHero 开勇

Open heart, bravely fly!

赵开勇ID:OpenHero
218322次访问,排名286好友102人,关注者109
OpenHero的文章
原创 234 篇
翻译 2 篇
转载 51 篇
评论 413 篇
OpenHero 开勇的公告
最近评论
lantao2:你装的是虚拟机?虚拟机下能用3D桌面么?
purplerose :鉴于babyface同学倾情introduce
路过 凑一热闹
不错不错
加油!
purplerose :鉴于babyface同学倾情introduce
路过 凑一热闹
不错不错
加油!
raulwk:试了试,highlighting 得不正常啊。连注释里的都突显了。怎么解决?
OpenHero:cuh其实就是一个h文件来看待就可以了,cu当成一个c文件看待,就好理解了
文章分类
收藏
    相册
    相册
    自己
    参与的开源项目
    Scilab Robotics Toolbox
    常去的几个地方
    Robocup 机器人足球官方站点
    RTSJ
    感兴趣的开源项目
    Flash得开源代码
    Robocup server
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 从debug_new浅谈内存泄漏检查收藏

    新一篇: 修改 mac地址 win2000 | 旧一篇: Oracle 安装的时候java环境配置选项

    debug_new和内存管理的一些问题
    确实,平时只管用debug_new,也大概知道实现的原理,重载new,
    察看mfc的“源代码”:
    void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
    #define DEBUG_NEW new(THIS_FILE, __LINE__)
    #if _MSC_VER >= 1200
    void AFX_CDECL operator delete(void* p, LPCSTR lpszFileName, int nLine);
    #endif
    这里先重载了new操作符,然后用debug_new的宏定义节省了this_file和line的输入。
    其中this_file是定义的一个宏得到当前文件的路径,line定义的是有new分配的那一行号。
    下面具体分析一下debug_new的重载:
    我们可以想一下,既然已经得到文件路径,和行号,还有分配内存时候可以得到指向内存的指针
    这些信息都是我们要得到的
    首先,我们可以先定义一个struct来存放这些信息,在分配内存的时候把这些信息放入一个map中
    delete的时候删除信息,delete时候如果map里面的信息信息已经不存在,出现了问题, 程序退出的时候如果map中还有未释放的信息,则说明还有未释放的信息,有泄漏
    实现的原理就是这样
    但是要有时要考虑多线程的问题,跨平台的问题~~==

    几个小技巧
    1。windows自带了很多内存管理的api
    _CrtDbgReport, _CrtDoForAllClientObjects, _CrtDumpMemoryLeaks,_CrtIsValidHeapPointer, _CrtIsMemoryBlock, _CrtIsValidPointer,_CrtMemCheckpoint, _CrtMemDifference, _CrtMemDumpAllObjectsSince, _CrtMemDumpStatistics, _CrtSetAllocHook, _CrtSetBreakAlloc, _CrtSetDbgFlag,_CrtSetDumpClient, _CrtSetReportFile, _CrtSetReportHook, _CrtSetReportMode
    2。mfc中封装了这些api并重载了new和delete
    会在afx.h中就可以看到这些包装的咚咚

    在Windows平台下几个工具
    MS C-Runtime Library内建的检测功能;
    外挂式的检测工具,诸如,Purify,BoundsChecker等;
    利用Windows NT自带的Performance Monitor。

    发表于 @ 2006年03月29日 11:35:00|评论(loading...)|编辑

    新一篇: 修改 mac地址 win2000 | 旧一篇: Oracle 安装的时候java环境配置选项

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © OpenHero 开勇