Skip to content

CALLOCATE


CALLOCATE — 从空闲存储区分配并零初始化内存

语法

vb
declare function Callocate cdecl ( byval num_elements as uinteger, byval size as uinteger = 1 ) as any ptr

用法

vb
result = Callocate( num_elements [, size ] )

参数

参数说明
num_elements要分配内存的元素数量。
size每个元素的字节大小。可选参数,默认值为 1

返回值

  • 成功时:返回指向已分配内存块的指针。
  • 失败时:返回空指针(0)。

说明

Callocate 从空闲存储区为 num_elements 个、每个 size 字节的元素分配内存,并将整个内存块初始化为零

由于内存已零初始化:

  • 可直接用于 String 变量或包含字符串的 UDT,因为字符串描述符在使用前已初始化为零。
  • 可直接用于 ZStringWString 缓冲区,因为数据将以空终止符开始的空字符串形式存在。

若不需要零初始化,请改用 Allocate(更快,跳过清零步骤)。

使用 Callocate 分配的内存最终必须通过 Deallocate 释放,否则会造成内存泄漏。

示例

vb
' Allocate space for 10 integers, zero-initialized
Dim p As Integer Ptr = CAllocate(10, SizeOf(Integer))

' Fill with values
For index As Integer = 0 To 9
    p[index] = (index + 1) * 10
Next

' Print values
For index As Integer = 0 To 9
    Print p[index];
Next
Print

' Free the memory
Deallocate(p)

输出:

10 20 30 40 50 60 70 80 90 100

方言差异

  • -lang qb 方言中不可用,除非使用别名 __Callocate 引用。

与 QB 的差异

  • 这是 FreeBASIC 扩展功能;QB 没有等效函数。

另请参阅

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系