如何将变量存储在数组中,该数据的大小仅在运行时才知道?如何访问此数组的元素?我觉得应该很容易,但我没有办法。
我的意思是像C中的动态数组。
答案 0 :(得分:4)
也许this article about heap可以帮到你。
答案 1 :(得分:0)
您没有说明哪个操作系统,但在Windows下,VirtualAlloc是分配粗略内存块的简单方法。它返回一个指针,您可以将其加载到寄存器中并用作基址。
invoke VirtualAlloc,NULL,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
mov [eax],something
答案 2 :(得分:0)
您还可以在函数开头的堆栈上分配具有静态大小的内存:
proc yourFunction stdcall param1:DWORD
local yourData[256]:BYTE
;...
endp
它的缺点是具有静态大小(上例中为256字节)但您不必调用特定于平台的特定API(如VirtualAlloc),并且在您离开函数时将其清除(无需跟踪您分配的数据并调用VirtualFree())。
答案 3 :(得分:0)
对于WinAPI,这就像:
invoke HeapAlloc, hHeap, flags, size
mov [pointer], eax
有关更多信息,请参见此(HeapAlloc)
https://javaee.github.io/javamail/FAQ#proxy
这(Windows中的堆)
https://docs.microsoft.com/en-us/windows/win32/api/heapapi/nf-heapapi-heapalloc