Raku/Perl6 6,Windows 7和10
Raku的NativeCall在创建缓冲区后运行"LocalFree( )“吗?还是我需要自己做?https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-localfree
非常感谢,-T
编辑:这是应JJ的要求。
https://learn.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexw
C++
LSTATUS RegSetValueExW(
HKEY hKey,
LPCWSTR lpValueName,
DWORD Reserved,
DWORD dwType,
const BYTE *lpData,
DWORD cbData
);在汇编代码中:
lea eax,[@@lMode]
call RegSetValueExA,HKEY_CURRENT_USER,offset
[@@VAL_Type],0,REG_DWORD,eax,DWORD指向键值字符串缓冲区的“偏移@@VAL_Type”->指针"eax“指向数据的->指针(在缓冲区”@@lMode“中)
"*lpData“和"@@lMode”是内存中分配的空间中的缓冲区。在使用它们之后,它们的内存需要用"LocalFree“返回给系统。
因此,为了重新表述我的问题,当NativeCall在内存中为缓冲区分配空间时,它是因此在完成缓冲区后返回空间,还是只是将其留在那里(内存泄漏)?
那么,我需要调用"LocalFree()“还是由NativeCall来处理呢?
发布于 2020-01-09 06:40:27
NativeCall不关闭任何WinApi调用缓冲区,因此您需要自己完成它。
https://stackoverflow.com/questions/59630605
复制相似问题