我有一個非常舊的(Centaurix Interactive 的 Photoshop SDK for Delphi)組件集。我們可以重新編譯它并在我們的應用程式中成功使用它,沒有任何問題。但是當我們升級到 Delphi 11 時,它已經開始產生訪問沖突。
如果我將記憶體分配行從更改
new(Stub)為Stub:= VirtualAlloc(nil, SizeOf(TStub), MEM_COMMIT, PAGE_EXECUTE_READWRITE)
它起初可以作業,但在進一步操作期間會產生幾個“記憶體問題”......
這個問題的原因是什么,是否有任何編譯器指令或解決方法來解決這個問題?
更新:它是一個 Windows 32 位應用程式,它可以與 delphi 10.3 一起使用,因此它支持 unicode。
uj5u.com熱心網友回復:
我找到了這個問題的原因。它不是直接創建記憶體分配,而是為 dll 創建一個存根函式。Delphi 11 中引入了幾個 PE 安全標志。您可以在 Marco Cantu 的博客中找到詳細資訊。其中之一,DEP flag,顯然阻止了一些記憶體操作。如果我取消選中它,該應用程式運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/493571.html
