ALLOCBUF.PAS
上传用户:cuilin0620
上传日期:2007-01-13
资源大小:33k
文件大小:1k
源码类别:

杀毒

开发平台:

C/C++

  1. {
  2. ALLOCBUF.PAS
  3. Kevin Dean
  4. Fairview Mall P.O. Box 55074
  5. 1800 Sheppard Avenue East
  6. Willowdale, Ontario
  7. CANADA    M2J 5B9
  8. CompuServe ID: 76336,3114
  9. March 24, 1991
  10. This module allocates a simple memory buffer whose size depends on the
  11. amount of memory available.  The size of the buffer is halved each time the
  12. allocation fails until memory is successfully allocated or the size goes below
  13. the minimum size requested.
  14. This code is public domain.
  15. }
  16. unit AllocBuf;
  17. interface
  18. function BufAlloc(var Size : word; MinSize : word) : pointer;
  19. implementation
  20. {***}
  21. { Allocate a buffer of flexible size. }
  22. function BufAlloc(var Size : word; MinSize : word) : pointer;
  23. var
  24.   Buffer : pointer;
  25.   BufSize : word;
  26. begin
  27. { Allocate as big a buffer as possible (at least MinSize). }
  28. BufSize := Size;
  29. repeat
  30.   GetMem(Buffer, BufSize);
  31.   if Buffer = nil then
  32.     BufSize := BufSize div 2
  33. until (Buffer <> nil) or (BufSize < MinSize);
  34. { Save buffer size. }
  35. Size := BufSize;
  36. BufAlloc := Buffer
  37. end;
  38. end.