2

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

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

4

3 回答 3

0

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

invoke  VirtualAlloc,NULL,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
mov     [eax],something
于 2012-01-25T17:15:47.247 回答
0

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

proc yourFunction stdcall param1:DWORD
local yourData[256]:BYTE
  ;...
endp

它的缺点是具有静态大小(在上面的示例中为 256 字节),但您不必调用特定于平台的 API,例如 VirtualAlloc,并且在您离开函数时它会被清理(无需跟踪您分配的数据并调用 VirtualFree())。

于 2016-07-01T11:51:49.700 回答
0

对于 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/

于 2020-02-01T13:08:33.303 回答