DEALLOCATE
来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDeallocate 最后更新: 2021-06-16
释放先前分配的内存。
语法
declare sub Deallocate cdecl ( byval pointer as any ptr )用法:
Deallocate( pointer )参数
- pointer — 先前分配的缓冲区地址。
说明
释放先前由 Allocate 分配的内存。调用后,pointer 将失效——任何后续使用(解引用或再次调用 Deallocate)都会导致未定义行为。
重要: 当内存中包含字符串描述符时,必须在调用 Deallocate _之前_先销毁字符串(设为 ""),否则字符串数据无法被释放,将导致内存泄漏。
对空指针调用 Deallocate 不执行任何操作。
示例
示例 1:基本用法
vb
Sub DeallocateExample1()
Dim As Integer Ptr integerPtr = Allocate( Len( Integer ) )
*integerPtr = 420
Print *integerPtr
Deallocate( integerPtr )
integerPtr = 0 ' Zero the pointer after deallocation
End Sub
DeallocateExample1()
End 0示例 2:按引用传递指针(正确模式)
vb
Function createInteger() As Integer Ptr
Return Allocate( Len( Integer ) )
End Function
Sub destroyInteger( ByRef someIntegerPtr As Integer Ptr )
Deallocate( someIntegerPtr )
someIntegerPtr = 0 ' Null the original pointer
End Sub
Sub DeallocateExample3()
Dim As Integer Ptr integerPtr = createInteger()
*integerPtr = 420
Print *integerPtr
destroyInteger( integerPtr )
Assert( integerPtr = 0 )
End Sub
DeallocateExample3()
End 0方言差异
- 在
-lang qb方言中不可用,除非使用别名__Deallocate引用。
与 QB 的差异
- FreeBASIC 新增。