面试题答案
一键面试以下是Visual Basic代码示例:
Option Explicit
' 声明API函数
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Const GMEM_FIXED = &H0
Const GMEM_ZEROINIT = &H40
Sub Main()
Dim hMem As Long
Dim data As String
Dim bytesToAllocate As Long
Dim result As Long
'设置要分配的字节数
bytesToAllocate = 1024 * 1024 '1MB为例
'调用GlobalAlloc分配内存
hMem = GlobalAlloc(GMEM_FIXED Or GMEM_ZEROINIT, bytesToAllocate)
If hMem = 0 Then
MsgBox "内存分配失败"
Exit Sub
End If
'进行数据操作,这里简单赋值
data = String(bytesToAllocate, "A")
'调用GlobalFree释放内存
result = GlobalFree(hMem)
If result <> 0 Then
MsgBox "内存释放失败"
End If
End Sub
正确内存管理的重要性
- 避免内存泄漏:如果在调用
GlobalAlloc
分配内存后不调用GlobalFree
释放,这部分内存将一直被占用,导致内存泄漏。随着程序长时间运行,内存被不断占用而不释放,最终会耗尽系统内存,使程序甚至整个系统崩溃。 - 资源优化:系统内存资源是有限的。及时释放不再使用的内存,可以让这些资源被其他程序或当前程序的其他部分有效利用,提高系统整体性能。
- 程序稳定性:正确的内存管理确保程序在整个生命周期内都能稳定运行。若内存使用混乱,可能会导致程序出现不可预测的错误,如访问非法内存地址,从而引发程序崩溃或数据损坏。