1
我相信我有一个非常基本的指针问题...我想使用Windows API(所以像malloc这样的东西是不可能的)来创建一个动态内存块用于各种在分配区域内的各种偏移处保存C字符串,整数值等。C堆分配索引/访问
我使用的代码如下:
HANDLE hProcess = NULL;
LONG32 *lpHeapAddr = NULL;
hHeap = GetProcessHeap();
lpHeapAddr = (LONG32*)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 0xC00);
我的问题是,我怎么能访问返回的空间内的特定偏移。变量 lpHeapAddr包含内存分配的基地址。我怀疑 lpHeapAddr [0x10]会给我访问到这个分配的第16偏移量。但是我发现这样的事情不工作,我怀疑这只是因为我的逻辑和理解是不正确:
char some_array[] = {0xED, 0x84, 0x5A, 0x20};
for(i = 0; i < 0x04; i++){
lpHeapAddr[0x30+i] = some_array[i];
}
值在 lpHeapAddr [的0x30]不在 some_array值。
希望这是明确的,我的困惑是一如既往,任何帮助,非常感谢。
干杯,
应该是手柄,而不是手柄。应该是LONG32 * lpHeapAdr(缺少*)。显示真实的代码,以及它究竟发生了什么。 – manuell
for循环中特定偏移量的值不像预期的那样......这是通过内存地址索引和递增的正确方法吗? – 5k1zk17
yes.it是指向已分配内存块的指针 – qwr