2012-01-19 260 views
0

有人可以解釋爲什麼這段代碼不起作用嗎?指針算術錯誤(OpenCL)

__kernel void foo(__global const void* a) 
{ 
    __global const uchar* currentPosition = (__global uchar*) a; 

    // Update the position 
    currentPosition += 4; 
} 

當我嘗試在增量後讀取currentPosition的值時,得到與不執行算術的結果相同的結果。

這是怎麼發生的?

謝謝。

+0

新的你是什麼意思與閱讀currentPosition'的'值:你的意思是你讀的值由'currentPosition'指出,(這不應該已經改變了),還是你的意思是'currentPosition'仍然指向相同的內存地址(不應該是這種情況)? – Grizzly

回答

1

這可能是聲明currentPosition的'const'關鍵字。 C++不允許你修改值。你聲明它時已經設置了currentPosition。

+0

這段代碼沒有區別,'currentPosition'被聲明爲指向' const uchar',但指向的值永遠不會被修改,只有指針本身。 – Grizzly

0

昨天晚上我發現了錯誤。問題不在於指針運算,而是在緩衝區a中的數據對齊。

對不起球員,但我在的OpenCL :(