点击或拖拽改变大小

Functions.MemGrpAlloc 方法

X#
在组中分配一个新的内存缓冲区。

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

参数

wGroup
类型:UInt32
新分配的内存缓冲区将属于的组。
此组应该已经通过 MemGrpOpen() 打开。
wBytes
类型:UInt32
要分配的字节数。

返回值

类型:IntPtr
如果有足够的内存可用,则返回指向新分配空间的指针;否则,返回 NULL_PTR。您应该始终检查返回值以确保分配成功。
备注
MemGrpAlloc() 分配至少 wBytes 的内存缓冲区。由于内存是以 32 字节为增量分配的,因此可能会分配一些额外的空间。
例如,甚至请求 1 字节也将分配 32 字节。由 MemGrpAlloc() 分配的空间由 MemGrpClose() 释放。
提示 提示:
此函数允许直接操作内存位置,使用时需格外小心。
备注
提示 提示:
静态内存函数(MemAlloc、MemSet 等)仅用于兼容性。 在大多数情况下,静态内存块可以(并且应该)用字节数组替换。
运行时中的许多函数,如接受内存块作为参数的低级 IO 函数,现在有接受字节数组作为参数的重载。
我们建议您使用这些重载,因为它们的性能稍微更好。
示例
此示例使用 MemGrpAlloc():
X#
 1Function Start()
 2    LOCAL ptrCurrent AS PTR
 3    LOCAL wGroup AS DWORD
 4    LOCAL lRet AS LOGIC
 5    wGroup := MemGrpOpen()        // 首先需要有一个组
 6    IF wGroup != 0
 7        ptrCurrent := MemGrpAlloc(wGroup, 100)
 8        MemGrpClose(wGroup)
 9        lRet := FALSE
10    ELSE
11        lRet := TRUE
12    ENDIF
13    RETURN lRet
参见