点击或拖拽改变大小

Functions.MemAlloc 方法

X#
分配指定大小的静态内存缓冲区。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION MemAlloc(
	wBytes AS DWORD
) AS IntPtr
查看代码

参数

wBytes
类型:UInt32
要分配的字节数。

返回值

类型:IntPtr
如果有足够的内存可用,则返回指向分配空间的指针;否则,返回 NULL_PTR。您应该始终检查返回值以确保分配成功。
备注
MemAlloc() 分配至少为 wBytes 的内存缓冲区。
分配的内存被定义为静态,因此不会被垃圾收集器移动。由于内存是以 32 字节为增量分配的,因此可能会分配一些额外的空间。
例如,请求甚至 1 个字节将分配 32 个字节。由 MemAlloc() 分配的空间由 MemFree() 释放。
提示 提示:
此函数允许直接操作内存位置,应极为小心使用。
备注
提示 提示:
静态内存函数(MemAlloc、MemSet 等)仅用于兼容性。 在大多数情况下,静态内存块可以(并且应该)用字节数组替换。
运行时中的许多函数,如接受内存块作为参数的低级 IO 函数,现在有接受字节数组作为参数的重载。
我们建议您使用这些重载,因为它们的性能稍微更好。
示例
此示例使用 MemAlloc() 检查指定块是否可用:
X#
 1FUNCTION IsAvailable(wRequest AS DWORD) AS LOGIC
 2    LOCAL ptrBuff AS PTR
 3    LOCAL lAvailable AS LOGIC
 4    ptrBuff := MemAlloc(wRequest)
 5    IF ptrBuff = NULL_PTR
 6        ? "内存分配失败"
 7        lAvailable := FALSE
 8    ELSE
 9        lAvailable := TRUE
10        MemFree(ptrBuff)
11    ENDIF
12    RETURN lAvailable
参见