指针转换是否总是可逆的?

时间:2017-03-22 22:46:01

标签: c++ pointers casting compatibility

我不确定当系统中有集群时会发生什么,例如big.LITTLE或多插槽服务器构建。 cpu-A中的一个线程(int,little-endian的32位本机大小)可以将整数指针转换为char指针,然后在cpu-B中处理数据(对于int,big-endian为64位本机大小)并且强制转换为整数。

char * c = (char *)floatPtr;  // in cpu-A with float=4 bytes
..
float * f = (float *) charPtr; // in cpu-B with float=8 bytes

// or cpu switched to compatibility mode between these and started working like a 16-bit cpu?

也许代码将被编译在fpga的软ip核心上运行,其内部有多个核心类型?

对齐限制怎么样? CPU-A是否需要8字节对齐的浮点数,而CPU-B可以在同一主板上使用4字节对齐的浮点数?

我将C#连接到" C"用于opencl计算的空间C ++ dll,我不能在" C"因此我决定使用基于char的数组分配器和对齐器(和初始化器)类来处理从浮点数到长数的各种缓冲区,并且需要确保在继续进行之前。

也许我只是在文档中发出警告,这样如果他们构建了奇特的系统,人们就不会在他们的服务器上运行我的库?

0 个答案:

没有答案