如何将变量存储在数组中,该数组的大小仅在运行时才知道?如何访问此数组的元素?我认为这应该很容易,但我没有办法。
我的意思是 C 中的动态数组。
您没有说明是哪个操作系统,但在 Windows 下,VirtualAlloc是一种分配粗略内存块的简单方法。它返回一个指针,您可以将其加载到寄存器中并用作基地址。
invoke VirtualAlloc,NULL,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
mov [eax],something
您还可以在函数开始时在堆栈上分配具有静态大小的内存:
proc yourFunction stdcall param1:DWORD
local yourData[256]:BYTE
;...
endp
它的缺点是具有静态大小(在上面的示例中为 256 字节),但您不必调用特定于平台的 API,例如 VirtualAlloc,并且在您离开函数时它会被清理(无需跟踪您分配的数据并调用 VirtualFree())。
对于 WinAPI,这将类似于:
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/