- c/
- 在HeapAlloc更改内存地址后是否应使用HeapFree?
在HeapAlloc更改内存地址后是否应使用HeapFree?
在HeapAlloc更改内存地址后是否应使用HeapFree?,c,windows,winapi,memory,C,Windows,Winapi,Memory,假设以下场景:
我们使用HeapAlloc()WINAPI函数将一块内存分配给varX
我们希望使用heaperalloc()重新分配X
heaperalloc()调整堆的大小并移动到新位置,因此指针已更改-我们称之为Y
我们应该在旧内存地址(X)被HeapAlloc移动后对其执行HeapFree操作,还是HeapAlloc会自动为我们清除以前的内存指针?否。HeapAlloc()将已释放旧地址。实际上,无论是Windows API堆函数还是标准的C malloc()/realloc()/fre
假设以下场景:
我们使用HeapAlloc()WINAPI函数将一块内存分配给varX
我们希望使用heaperalloc()重新分配X
heaperalloc()调整堆的大小并移动到新位置,因此指针已更改-我们称之为Y
我们应该在旧内存地址(X)被HeapAlloc移动后对其执行HeapFree操作,还是HeapAlloc会自动为我们清除以前的内存指针?否。HeapAlloc()将已释放旧地址。实际上,无论是Windows API堆函数还是标准的C malloc()/realloc()/free(),您遇到的每个分配器都会这样做。不过,这里有一个直接的引语:
如果heaperalloc失败,则不会释放原始内存,并且原始句柄和指针仍然有效
heaperalloc保证保留被重新分配的内存的内容,即使新内存被分配到不同的位置。保存内存内容的过程涉及可能非常耗时的内存复制操作
如果成功的话,这些组合将导致heaperalloc()释放旧内存地址的结论。否。heaperalloc()将已经释放旧地址。实际上,无论是Windows API堆函数还是标准的C malloc()/realloc()/free(),您遇到的每个分配器都会这样做。不过,这里有一个直接的引语:
如果heaperalloc失败,则不会释放原始内存,并且原始句柄和指针仍然有效
heaperalloc保证保留被重新分配的内存的内容,即使新内存被分配到不同的位置。保存内存内容的过程涉及可能非常耗时的内存复制操作
如果成功的话,这些组合将导致heaperalloc()释放旧内存地址的结论。否。heaperalloc()将已经释放旧地址。实际上,无论是Windows API堆函数还是标准的C malloc()/realloc()/free(),您遇到的每个分配器都会这样做。不过,这里有一个直接的引语:
如果heaperalloc失败,则不会释放原始内存,并且原始句柄和指针仍然有效
heaperalloc保证保留被重新分配的内存的内容,即使新内存被分配到不同的位置。保存内存内容的过程涉及可能非常耗时的内存复制操作
如果成功的话,这些组合将导致heaperalloc()释放旧内存地址的结论。否。heaperalloc()将已经释放旧地址。实际上,无论是Windows API堆函数还是标准的C malloc()/realloc()/free(),您遇到的每个分配器都会这样做。不过,这里有一个直接的引语:
如果heaperalloc失败,则不会释放原始内存,并且原始句柄和指针仍然有效
heaperalloc保证保留被重新分配的内存的内容,即使新内存被分配到不同的位置。保存内存内容的过程涉及可能非常耗时的内存复制操作
这些结合起来的结果应该是,如果成功,heaperalloc()将释放旧的内存地址。为了更好地衡量,在调用heaperalloc()
时,不要将结果直接分配给原始变量。如果重新分配失败,旧内存仍然有效,但您将丢失指向它的指针,从而泄漏该内存。请确保始终先重新分配到临时变量,然后仅在重新分配成功时才将值分配给原始变量。为了更好地衡量,在调用heaperalloc()
时,不要将结果直接分配给原始变量。如果重新分配失败,旧内存仍然有效,但您将丢失指向它的指针,从而泄漏该内存。请确保始终先重新分配到临时变量,然后仅在重新分配成功时才将值分配给原始变量。为了更好地衡量,在调用heaperalloc()
时,不要将结果直接分配给原始变量。如果重新分配失败,旧内存仍然有效,但您将丢失指向它的指针,从而泄漏该内存。请确保始终先重新分配到临时变量,然后仅在重新分配成功时才将值分配给原始变量。为了更好地衡量,在调用heaperalloc()
时,不要将结果直接分配给原始变量。如果重新分配失败,旧内存仍然有效,但您将丢失指向它的指针,从而泄漏该内存。确保始终首先重新分配到临时变量,然后仅在重新分配成功时才将值分配给原始变量。