AnsiStrAlloc - C++ Builder

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrAlloc


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

头文件:#include
命名空间: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 的例子。


相关:

  • System::Sysutils::StrAlloc
  • System::Sysutils::AnsiStrAlloc
  • System::Sysutils::WideStrAlloc
  • System::Sysutils::StrBufSize
  • System::Sysutils::StrNew
  • System::Sysutils::StrDispose
  • System::Sysutils
  • System::AnsiString
  • System::StringOfChar
  • System
  • std::malloc
  • std::calloc
  • std::realloc
  • std::free

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrAlloc

你可能感兴趣的:(AnsiStrAlloc - C++ Builder)