首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Raku的NativeCall运行"LocalFree( )“吗?

Raku的NativeCall运行"LocalFree( )“吗?
EN

Stack Overflow用户
提问于 2020-01-07 14:39:49
回答 1查看 131关注 0票数 0

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

代码语言:javascript
复制
C++
    LSTATUS RegSetValueExW(
    HKEY        hKey,
    LPCWSTR     lpValueName,
    DWORD       Reserved,
    DWORD       dwType,
    const BYTE  *lpData,
    DWORD       cbData
  );

在汇编代码中:

代码语言:javascript
复制
 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来处理呢?

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 06:40:27

NativeCall不关闭任何WinApi调用缓冲区,因此您需要自己完成它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59630605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档