Moveblock讀取問題

各位先進:
我想透過moveblock指標輸入讀取c語言執行中的a=123數值,
LabView可順利運行結束,但結果無法得到123數值,
不確定是哪個設定環節有問題? 謝謝
系統win10 64x, LabView 2020SP1
以下圖片是細節內容。

你的結果會讀到0x60FF80是因為你輸入端(Address(Pointer))傳入的是0x60FF80這個值的記憶體位置(Pointer to value),但就算你把Address(Pointer) pass改成Value,一樣可能會報錯無法執行,因為這兩支是獨立的程式,所以通常作業系統會對使用的記憶體區塊有保護。你可以試試開第二個C++ console的程式,然後嘗試直接印出第一個程式執行時看到的記憶體位置的值,就會發現執行到printf的時候,也會有存取權限的問題。

上面的原因應該是因為在C裡面所印出來的記憶體位置,可能不是絕對位置,程式執行時系統會配置一塊記憶體,如果你直接把位置給Labview讀,有可能因為該位置是作業系統保留區或其他原因,造成沒有權限讀取,所以實際上你是可以隨便填一個記憶體位置沒錯,但不保證可以讀取,Windows的記憶體管理比你想的更複雜。

正確的作法是C++產生的記憶體位置想要傳給Labview,可以透過call DLL方式傳出來給Labview,然後MoveBlock的address pass改成value這樣就可以讀到值了。