Functions.MemGrpCAlloc 方法 | |
分配指定大小的静态内存缓冲区。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION MemGrpCAlloc(
wGroup AS DWORD,
wItems AS DWORD,
wBytes AS DWORD
) AS IntPtr
public static IntPtr MemGrpCAlloc(
uint wGroup,
uint wItems,
uint wBytes
)
查看代码参数
- wGroup
- 类型:UInt32
The group to which the newly allocated memory buffer will belong. This group should have already been opened by MemGrpOpen(). - wItems
- 类型:UInt32
要分配内存的项目数量。 - wBytes
- 类型:UInt32
每个项目要分配的字节数。
返回值
类型:
IntPtr
如果有足够的内存可用,则返回指向分配空间的指针;否则,返回 NULL_PTR。您应该始终检查 MemCAlloc() 的返回值以确保分配成功。
备注 提示: |
---|
静态内存函数(MemAlloc、MemSet 等)仅用于兼容性。 在大多数情况下,静态内存块可以(并且应该)用字节数组替换。
运行时中的许多函数,如接受内存块作为参数的低级 IO 函数,现在有接受字节数组作为参数的重载。
我们建议您使用这些重载,因为它们的性能稍微更好。
|
示例
此示例使用 MemCAlloc() 为十个长整型分配空间:
1LOCAL ptrLongs AS PTR
2ptrLongs := MemCAlloc(10, 4)
我们还可以使用以下方式代替硬编码 4:
1ptrLongs := MemCAlloc(10, _SizeOf(LONG))
下一个示例使用 MemCAlloc() 为五个实例的定义结构分配空间:
1STRUCTURE StatInfo
2 MEMBER wAverageHit AS DWORD
3 MEMBER wMaxHit AS DWORD
4 MEMBER wMinHit AS DWORD
5FUNCTION MemCAlloc2() AS VOID
6 LOCAL ptrStruct AS PTR
7 ptrStruct := MemCAlloc(5, _SizeOf(StatInfo))
8 IF ptrStruct = NULL_PTR
9 ? "分配失败"
10 ELSE
11 MemFree(ptrStruct)
12 ENDIF
参见