当前位置: 首页 > news >正文

怎么做有声小说网站播音员基础建设期刊在哪个网站可以查

怎么做有声小说网站播音员,基础建设期刊在哪个网站可以查,如何查网站备案号,网页建站怎么做忘记释放已经分配的内存是一种常见的编程错误#xff0c;当然我指的是在C编程当中#xff0c;例如下面的代码里面就存在一个忘记释放内存的编程错误。我个人觉得忘记释放内存的编程错误是不可避免的#xff0c;毕竟程序员都是人#xff0c;困了#xff0c;心情不好了…忘记释放已经分配的内存是一种常见的编程错误当然我指的是在C编程当中例如下面的代码里面就存在一个忘记释放内存的编程错误。我个人觉得忘记释放内存的编程错误是不可避免的毕竟程序员都是人困了心情不好了代码过于复杂啦等等都可能导致忘记加上一句delete XXX语句。 #include tchar.h #include windows.h #include string #include iostream using namespace std;class CTestClass { public:CTestClass(LPWSTR szName){m_lpName new wstring(szName);}~CTestClass(){}void PrintName(){wcout *m_lpName endl;} private:wstring *m_lpName; }; HRESULT CreateTestClass(LPWSTR szName, CTestClass **ppObject) {*ppObject new CTestClass(szName);if ((*ppObject) NULL)return E_FAIL;elsereturn S_OK; } int _tmain(int argc, _TCHAR* argv[]) {CTestClass *pObject NULL;HRESULT hr CreateTestClass(LThis is a Test, pObject);if (hr ! S_OK){return -1;}else{pObject-PrintName(); // pObject没有被释放return 0;} }实际上Visual Studio已经提供了方法帮助你快速找到这些没有释放的内存。 Visual Studio提供了一系列的CRT调试APICRT提供了一个调试内存分配堆可以跟踪和管理内存在什么地方分配当你在这个堆上分配内存的时候每一次内存分配调用例如malloc或者newCRT都会额外分配大约36个字节用来保存例如这个内存块分配的文件名、行号、内存块的大小等信息最后CRT将这些内存块使用一个双链表链接起来。每一次内存释放的时候free或者delete函数就从这个内存块链表里面将要释放的内存块删除因此在需要检查内存泄漏的时候只要遍历这个双链表依次打印出这些内存块就可以发现所有未释放的内存了。下面是CRT内存块的原始声明 typedef struct _CrtMemBlockHeader {// Pointer to the block allocated just before this one:struct _CrtMemBlockHeader *pBlockHeaderNext;// Pointer to the block allocated just after this one:struct _CrtMemBlockHeader *pBlockHeaderPrev;char *szFileName; // File nameint nLine; // Line numbersize_t nDataSize; // Size of user blockint nBlockUse; // Type of blocklong lRequest; // Allocation number// Buffer just before (lower than) the users memory:unsigned char gap[nNoMansLandSize]; } _CrtMemBlockHeader;下面的代码演示了如何使用CRT提供的调试API来修改刚才的源文件检测未释放的内存空间注意红色添加的部分 #include tchar.h #include windows.h #include string #include iostream // 使用CRT调试API #include crtdbg.h using namespace std; // 将所有的内存分配函数new替换成CRT提供的调试new #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new(_CLIENT_BLOCK, __FILE__, __LINE__) #else #define DEBUG_CLIENTBLOCK #endif #ifdef _DEBUG #define new DEBUG_CLIENTBLOCK #endif class CTestClass { public:CTestClass(LPWSTR szName){m_lpName new wstring(szName);}~CTestClass(){}void PrintName(){wcout *m_lpName endl;} private:wstring *m_lpName; }; HRESULT CreateTestClass(LPWSTR szName, CTestClass **ppObject) {*ppObject new CTestClass(szName);if ((*ppObject) NULL)return E_FAIL;elsereturn S_OK; } int _tmain(int argc, _TCHAR* argv[]) { // 设置CRT调试API的报表输出模式将所有的错误、警告还有断言都输出到控制台_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);CTestClass *pObject NULL;HRESULT hr CreateTestClass(LThis is a Test, pObject);if (hr ! S_OK){return -1;}else{pObject-PrintName();// 检查未释放的内存_CrtDumpMemoryLeaks();return 0;} }转载于:https://www.cnblogs.com/steady/archive/2011/04/26/2029654.html
http://www.pierceye.com/news/948765/

相关文章:

  • 万家灯火网站建设win7系统做网站服务器
  • 网站直播用php怎么做做家旅游的视频网站好
  • 平台网站建设方案查看自己电脑的网站开发语言
  • 织梦如何做网站地图建设一个网站用什么软件下载
  • 建设银行互联网网站怎么制作小程序软件
  • 做购物网站平台视觉比较好看的网站
  • 网站建设要做什么会计科目网站建设的展望 视频
  • 那种广告式网站怎么做网站为什么具有网络营销价值
  • 包头建站怎么下载网站动态图片
  • 大企业网站建设哪里好qq网站登录入口
  • 手机网站有什么区别是什么wordpress模板2zzt
  • 想做个网站报价蔬菜价格怎么做公司做网站一般多少钱
  • 南宁老牌网站建设公司公司网站搭建教程
  • 网站首页快照更新快常见的电子商务网站网址
  • 外贸网站导航wordpress category 404
  • 漯河市网站建设在线教育网站建设
  • 便宜网站建设模板网站网站做推广需要营业执照
  • 网站地址栏图标文字企业网站设计公司
  • 公司做网站推广有没有用网址导航被更改了怎么换回来
  • 好看云在线网站模板下载 迅雷下载 迅雷下载地址免费建小程序网站
  • 通州网站制作游戏网站域名
  • 医疗网站前置审批要多长时间营销型外贸网站广州
  • 哈尔滨网站建设oeminc购买手表网站
  • 营销推广公司兰州seo培训
  • 南城网站建设公司php购物网站开发实例源码
  • 无锡网站备案百度应用市场
  • 高端房产网站建设上传空间网站
  • 上海城建建设官方网站中企动力网站价格
  • 网站建设中国十强阜阳网站制作公司多少钱
  • 网站建设公司 温州虚拟机电脑网页版