易語言字節(jié)集參數(shù)傳遞詳解
更新時間:2018年12月06日 14:39:27 投稿:laozhang
在本文中小編給大家分享了關(guān)于易語言字節(jié)集參數(shù)傳遞的相關(guān)知識點內(nèi)容,需要的可以參考下。
易語言多線程之字節(jié)集參數(shù)傳遞
傳遞文本可以直接傳遞文本的指針,但是字節(jié)集卻不能這樣,看下面直接傳遞字節(jié)集指針的代碼:
.版本 2
.支持庫 spec
.支持庫 EThread
.程序集 窗口程序集1
.程序集變量 線程句柄, 整數(shù)型
.程序集變量 內(nèi)存長度, 整數(shù)型
.子程序 _按鈕1_被單擊
.局部變量 data, 字節(jié)集
.局部變量 ptr, 整數(shù)型
data = { 1 }
內(nèi)存長度 = 取字節(jié)集長度 (data)
ptr = 取變量數(shù)據(jù)地址 (data)
啟動線程 (&傳遞字節(jié)集參數(shù), ptr, 線程句柄)
關(guān)閉線程句柄 (線程句柄)
.子程序 傳遞字節(jié)集參數(shù)
.參數(shù) ptr, 整數(shù)型
調(diào)試輸出 (指針到字節(jié)集 (ptr, 內(nèi)存長度))

很明顯結(jié)果是錯誤的,錯誤的原因涉及到程序的內(nèi)存的劃分,后面會詳細(xì)講解。
先看解決這個問題的代碼:
.版本 2
.支持庫 spec
.支持庫 EThread
.程序集 窗口程序集1
.程序集變量 線程句柄, 整數(shù)型
.程序集變量 內(nèi)存長度, 整數(shù)型
.子程序 _按鈕1_被單擊
.局部變量 data, 字節(jié)集
.局部變量 ptr, 整數(shù)型
data = { 1 }
內(nèi)存長度 = 取字節(jié)集長度 (data)
ptr = 申請內(nèi)存 (內(nèi)存長度, 真)
寫到內(nèi)存 (data, ptr, 內(nèi)存長度)
啟動線程 (&傳遞字節(jié)集參數(shù), ptr, 線程句柄)
關(guān)閉線程句柄 (線程句柄)
.子程序 傳遞字節(jié)集參數(shù)
.參數(shù) ptr, 整數(shù)型
調(diào)試輸出 (指針到字節(jié)集 (ptr, 內(nèi)存長度))
釋放內(nèi)存 (ptr)
首先申請內(nèi)存,然后把數(shù)據(jù)寫入內(nèi)存,把內(nèi)存的指針傳入線程。
運行結(jié)果:

有時間再發(fā)一帖說下程序的內(nèi)存劃分,還有取變量地址和取變量數(shù)據(jù)地址的區(qū)別。

