美文网首页
AnsiStrAlloc - C++ Builder

AnsiStrAlloc - C++ Builder

作者: 玄坴 | 来源:发表于2021-08-25 08:10 被阅读0次

    C++ Builder 参考手册System::SysutilsAnsiStrAlloc


    分配一个 Delphi 兼容的 ANSI 字符串内存,这是过时的函数

    头文件:#include <System.SysUtils.hpp>
    命名空间:System::Sysutils
    函数原型:

    char * __fastcall AnsiStrAlloc(unsigned Size);
    

    参数:

    • Size: 要分配内存的 char 的个数,实际分配内存的字节数 = Size + 4

    返回值:

    • 分配一个 Delphi 兼容的 ANSI 字符串内存,返回指向字符串首字符的指针,如果不考虑内存的内部结构,可以像 C 语音字符串那样使用返回地址所指向的内存;
    • 如果要释放这个函数分配的内存,需要使用 StrDispose 函数;
    • 可以通过函数 StrBufSize 获取内存里面可以存放的字节数,即分配内存时调用 AnsiStrAlloc 的参数值;
    • 实际分配内存的过程 (通过分析源码得到的):
      1. 分配 Size + 4 个字节的内存 (假设分配的内存为 unsigned char *ptr);
      2. 这个内存的前 4 个字节的内容是一个无符号整数,值 = Size + 4 (那么就是 *(unsigned int *)ptr = Size+4),即在分配的内存的最前面 4 个字节记住实际分配内存的字节数;
      3. 返回值等于指向这个内存的第 4 个字节 (即 return (char *)(ptr+4);),字符串的内容都存放在从这个地址开始的位置了;
    • 这是过时的函数,由于 ANSI 编码原因已经移动到 System.AnsiStrings.hpp 这个头文件里面了;
    • 这是过时的函数,因为 AnsiString 可以自动管理内存,不需要这个函数了。

    例子:请参考 StrBufSize 的例子。


    相关:


    C++ Builder 参考手册System::SysutilsAnsiStrAlloc

    相关文章

      网友评论

          本文标题:AnsiStrAlloc - C++ Builder

          本文链接:https://www.haomeiwen.com/subject/uppdahtx.html