如何解决内存泄漏问题

2024-11-08 00:37:32
推荐回答(1个)
回答(1):

  第一,良好的编码习惯,尽量在涉及内存的程序段,检测出内存泄露。当程式稳定之后,在来检测内存泄露时,无疑增加了排除的困难和复杂度。
  使用了内存分配的函数,要记得要使用其想用的函数释放掉,一旦使用完毕。
  Heap memory:
  malloc\realloc ------ free
  new \new[] ---------- delete \delete[]
  GlobalAlloc------------GlobalFree
  要特别注意数组对象的内存泄漏
  MyPointEX *pointArray =new MyPointEX [100];
  其删除形式为:
  delete []pointArray
  Resource Leak :对于系统资源使用之前要仔细看起使用方法,防止错误使用或者忘记释放掉系统资源。
  我们看MSDN上一个创建字体的例子:
  RECT rect;
  HBRUSH hBrush;
  FONT hFont;
  hdc = BeginPaint(hWnd, &ps);
  hFont = reateFont(48,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY, VARIABLE_PITCH,TEXT(“Impact”));
  SelectObject(hdc, hFont);
  SetRect(&rect, 100,100,700,200);
  SetTextColor(hdc, RGB(255,0,0));
  DrawText(hdc, TEXT(“Drawing Text with Impact”), -1,&rect, DT_NOCLIP); DeleteObject(hFont);
  EndPaint(hWnd, &ps);