• Delphi内存与指针学习摘要


    (1)StrAlloc StrDispose
    给字符指针(PChar、PWideChar、PAnsiChar)分配内存, 最佳选择是: StrAlloc.(注: 也可以用array[0..Max_Path] of Char)
    StrAlloc 分配的内存, 用StrDispose 释放, 用 StrBufSize 获取大小.
    (2)New Dispose
    New 是给已知大小的指针分配内存 释放: Dispose;
    (3)GetMem FreeMem
    GetMem 主要是给无类型指针分配内存 释放: FreeMem;
    (4)AllocMem
    AllocMem 分配内存后会同时初始化(为空) 释放: FreeMem.
    (5)ReallocMem
    ReallocMem是在已分配的内存的基础上重新分配内存.
    (6)MoveMemory、CopyMemory、 Move
    MoveMemory、CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程;
    MoveMemory、CopyMemory 操作指针; Move 操作实体.
    (7)跨进程的内存分配
    Delphi 为我们提供了三个方便的函数:
    GlobalAllocPtr   {简化自 API 的 GlobalAlloc}
    GlobalReAllocPtr {简化自 API 的 GlobalReAlloc}
    GlobalFreePtr    {简化自 API 的 GlobalFree}
    读写本程序以外的数据时可以使用它们, 很方便, 譬如:
    p := GlobalAllocPtr(0, Len);      {分配}
    p := GlobalReAllocPtr(p, Len, 0); {重分配}
    GlobalFreePtr(p);                 {释放}
    注意 GlobalAllocPtr 的第一个参数和 GlobalReAllocPtr 的最后一个参数, 上面给的都是 0;
    这两个参数的意义是一样的, 规范一点应该写成 GMEM_FIXED (表示分配固定内存), 常用的参数还有:
    GMEM_MOVEABLE {分配可移动内存}
    GMEM_ZEROINIT {同时清空内存}
    GHND          {分配可移动内存同时清空}
    GPTR          {分配固定内存同时清空}

    更详细参考:万一博客http://www.cnblogs.com/del/category/162410.html

  • 相关阅读:
    (转)Android Studio解决unspecified on project app resolves to an APK archive which is not supported
    OpenGL 学习总结
    关于tap设备
    写把proto函数搞清楚
    qemu中是怎么模拟的新的设备
    kvm搭建完成了,那么问题来了,到底是什么原理
    kvm竟然抓不到kvm的tracepoint
    安装KVM
    试着理解下kvm
    网络namespace
  • 原文地址:https://www.cnblogs.com/minghang/p/5615480.html
Copyright © 2020-2023  润新知