首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FASM:动态数组

FASM:动态数组
EN

Stack Overflow用户
提问于 2012-01-26 00:38:51
回答 3查看 1.4K关注 0票数 2

如何在数组中存储变量,数组的大小仅在运行时才知道?如何访问此数组的元素?我认为这应该很容易,但我看不出有什么方法。

我的意思是像C中的动态数组。

EN

回答 3

Stack Overflow用户

发布于 2012-01-26 01:15:47

您不需要说明是哪种操作系统,但在Windows下,VirtualAlloc是一种分配粗略内存块的简单方法。它返回一个指针,您可以将该指针加载到寄存器中并用作基地址。

代码语言:javascript
复制
invoke  VirtualAlloc,NULL,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
mov     [eax],something
票数 0
EN

Stack Overflow用户

发布于 2016-07-01 19:51:50

还可以在函数开始时在堆栈上分配具有静态大小的内存:

代码语言:javascript
复制
proc yourFunction stdcall param1:DWORD
local yourData[256]:BYTE
  ;...
endp

它的缺点是有一个静态的大小(在上面的例子中是256字节),但你不必调用特定于平台的API,比如VirtualAlloc,当你离开你的函数时,它就会被清除(不需要跟踪你分配的数据并调用VirtualFree())。

票数 0
EN

Stack Overflow用户

发布于 2020-02-01 21:08:33

对于WinAPI,这将类似于:

代码语言:javascript
复制
invoke HeapAlloc, hHeap, flags, size
mov    [pointer], eax

有关更多信息,请参阅此(HeapAlloc)

https://docs.microsoft.com/en-us/windows/win32/api/heapapi/nf-heapapi-heapalloc

还有这个(Windows中的堆)

https://docs.microsoft.com/en-us/windows/win32/api/heapapi/

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

https://stackoverflow.com/questions/9006408

复制
相关文章

相似问题

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