在這個鏈接中,有人說CoTaskMemAlloc()是SHGetMalloc()的替代品。
然而,這些函式使用不同的引數型別和回傳值型別。
因此,一個函式怎么可能是另一個函式的替代品?
誰能解釋一下這個問題?
有人能解釋一下嗎?
我只是想為新的API轉換舊的代碼,并確保其正常運行。
我只是想為新的API轉換舊的代碼。
uj5u.com熱心網友回復:
這并不是一個直接的替換,在這種情況下,"替換 "意味著你現在應該在你以前依賴SHGetMalloc的地方使用CoTaskMemAlloc。
注意,SHGetMalloc回傳一個分配器(您可能會使用它),CoTaskMemAlloc避免了該中間步驟的需要,它是一個更簡單的呼叫模式。
uj5u.com熱心網友回復:
CoTaskMemAlloc是SHGetMalloc的替代品,因為它們被保證從同一個堆中分配。真正替代SHGetMalloc的是CoGetMalloc,CoTaskMemAlloc只是在內部呼叫CoGetMalloc。
SHAlloc/SHGetMalloc/SHFree 的存在是因為 Windows 95 對 RAM 的最低要求是 4 MiB! 為了實作這一目標,shell32.dll實作了一個迷你版的COM,以避免在Explorer.exe中把ole32.dll加載到記憶體中。
另見:
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/320277.html
標籤:
