当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。
 

 

 ·用visual c#实现文件大批量处理    »显示摘要«
    摘要:在科研、企业的数据处理中,有时会涉及大量的文件操作。在大量数据处理的时侯,有时需要进行多对一,或一对多的文件操作,即多个数据文件与一个数据文件进行信息交互,microsoft的.net开发利器c#提供了前所未有的高开发效率,在文件操作方面也有所体现。全文阅读:用visual c#实现文件大批量处理 ......
 ·sql语句的优化方法    »显示摘要«
    摘要:在sql语句优化过程中,我们经常会用到hint,现总结一下在sql优化过程中常见oracle hint的用法:1. /*+all_rows*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:select /*+all+_rows*/ emp_no,emp_nam,dat_in from bsempms where emp_no=´scott´;......


关于指针泄漏

对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题.已经有许多技术被研究出来以应对这个问题,比如smart pointer,garbage collection等.smart pointer技术比较成熟,stl中已经包含支持smart pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;garbage collection技术在java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在c++中也加入gc的支持.现实世界就是这样的,作为一个c/c++程序员,内存泄漏是你心中永远的痛.不过好在现在有许多工具能够帮助我们验证内存泄漏的存在,找出发生问题的代码.

  一般我们常说的内存泄漏是指堆内存的泄漏.堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存.应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了.以下这段小程序演示了堆内存发生泄漏的情形: 【程序编程相关:linux显示颜色、查找文件

  内存泄漏的定义 【推荐阅读:深入浅出Win2000计算机启动 关机脚

  { 【扩展信息:CD POP 1.5 New!

  void myfunction(int nsize)

  char* p= new char[nsize];

  if( !getstringfrom( p, nsize ) ){

  messagebox(“error”);

  return;

  }

  …//using the string pointed by p;

  delete p;

  }

 当函数getstringfrom()返回零的时候,指针p指向的内存就不会被释放.这是一种常见的发生内存泄漏的情形.程序在入口处分配内存,在出口处释放内存,但是c函数可以在任何地方退出,所以一旦有某个出口处没有释放应该释放的内存,就会发生内存泄漏.


...   下一页
 ·一段自动补位的函数(asp)    »显示摘要«
    摘要:一段自动补位的函数function formatsn(getnum,getbit) dim formatsnnum,formatsnpre,formatsnj formatsnnum = getbit - len(getnum) for formatsnj = 1 to formatsnnum formatsnpre = formatsnpre & "0" next f......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE