如何调用 LocalFree()?
How do I call LocalFree()?
我有这段代码
HLOCAL localHandle;
char *lpText;
localHandle = LocalAlloc(LMEM_MOVEABLE, 40);
if(localHandle)
{
lpText = (char*)LocalLock(localHandle);
//Call LocalFree(localHandle) or LocalFree(lpText) ????
}
我应该打电话给LocalFree(localHandle);
还是LocalFree(lpText);
?
LocalFree 的 hMem
参数记录为:
A handle to the local memory object. This handle is returned by either the LocalAlloc or LocalReAlloc function. It is not safe to free memory allocated with GlobalAlloc.
因此在您的示例中您需要调用:
LocalFree(localHandle);
不要忘记在调用 LocalFree 之前调用 LocalUnlock 以减少引用计数。使用 LMEM_MOVEABLE
.
时这是强制性的
两者都不是,但绝不是 LocalFree(lpText) 从代码的外观来看,lpText 指向的内存在调用 LocalFree 后将变为垃圾。
如果调用 LocalLock,则应在调用 LocalFree(localHandle) 之前调用 LocalUnlock(localHandle)。
为什么不直接使用 malloc?是否有一些技术原因您需要只调用 LocalAlloc?让运行时为您完成工作。
这些函数似乎是某些库的一部分。我不知道这个库,但通常(参见 malloc() 和 free()),你必须在 malloc() 函数返回的 pointer/object 上调用 free() 函数。
所以在你的情况下是 LocalFree(localHandle)
。
我有这段代码
HLOCAL localHandle;
char *lpText;
localHandle = LocalAlloc(LMEM_MOVEABLE, 40);
if(localHandle)
{
lpText = (char*)LocalLock(localHandle);
//Call LocalFree(localHandle) or LocalFree(lpText) ????
}
我应该打电话给LocalFree(localHandle);
还是LocalFree(lpText);
?
LocalFree 的 hMem
参数记录为:
A handle to the local memory object. This handle is returned by either the LocalAlloc or LocalReAlloc function. It is not safe to free memory allocated with GlobalAlloc.
因此在您的示例中您需要调用:
LocalFree(localHandle);
不要忘记在调用 LocalFree 之前调用 LocalUnlock 以减少引用计数。使用 LMEM_MOVEABLE
.
两者都不是,但绝不是 LocalFree(lpText) 从代码的外观来看,lpText 指向的内存在调用 LocalFree 后将变为垃圾。
如果调用 LocalLock,则应在调用 LocalFree(localHandle) 之前调用 LocalUnlock(localHandle)。
为什么不直接使用 malloc?是否有一些技术原因您需要只调用 LocalAlloc?让运行时为您完成工作。
这些函数似乎是某些库的一部分。我不知道这个库,但通常(参见 malloc() 和 free()),你必须在 malloc() 函数返回的 pointer/object 上调用 free() 函数。
所以在你的情况下是 LocalFree(localHandle)
。