在 MATLAB R2014a 與 Visual Studio 2013 混合編程中,C 程式的全域變數 g 在 MATLAB 透過並行計算循環呼叫時,並未隨著 C 程式結束而釋放,導致數值持續累加(如 100, 101, 102...),而非預期的重置(100, 101, 100, 101...)。這表明 C 與 MATLAB 共享了進程記憶體空間。
MATLAB 的 MEX 函數在同一進程中載入,C 全域變數的生命週期跟隨進程,不會在單次函數呼叫結束時銷毀。並行計算工具箱可能復用工作進程,進一步導致變數殘留。
persistent 關鍵字管理狀態,而非依賴 C 端全域變數。編寫 MEX 函數時,應視其為無狀態的純函數,所有狀態由 MATLAB 端管理,C 端僅負責計算。若確需跨呼叫保持狀態,請使用 mexLock/mexUnlock 配合靜態變數,並妥善處理並行安全。