2012-01-19 151 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 :(