大佬教程收集整理的这篇文章主要介绍了使用C将u64数组重新解释为u16的3D而不改变内存分配,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
36348941应吐出:
0,554,41997
但是在C中我看不到执行此类型转换的方法.我理解C在内存管理方面有很大的潜力,我希望我不必遍历数据来执行此操作,而只需更改数据在内存中的解释方式,让处理器分配和为我的程序取消分配内存将耗费时间(它需要尽可能快地运行 – 最好少于20毫秒).
如果我简单地说:
arg1 = *(unsigned short (*))(&arg2);
我发现数据截断了这些位,因此每64位整数只吐出一个值,上面的情况就是41997.
这只是应用程序的另一个棘手问题的第一部分,接下来需要将这个16位值数组转换为三维数组,而我可以通过执行以下操作来编译该程序:
const int I = 4; const int J = 256; const int K = 256; arg1 = *(unsigned short (*)[I][J][K])(&arg2);
但是这给了我没有数据,我已经看到这个工作在其他语言,但他们重新分配内存,因此耗时,最好我希望所有这一切发生在处理器,不需要内存分配,因为它只需要内存中位的映射是不同的,而不是数据本身.
然后,我需要能够将此数据作为指向三维数组的指针传回.这样做的原因是我正在努力实现这一目的的语言就像上面提到的那样,内存分配但是调用C DLL的开销很小,所以似乎有可能成为一个解决方案.
我也研究了联盟,但我现在明白这是一种使用联盟的错误方式.
多年来我没有碰过C,所以任何帮助都会非常感激.
以上是大佬教程为你收集整理的使用C将u64数组重新解释为u16的3D而不改变内存分配全部内容,希望文章能够帮你解决使用C将u64数组重新解释为u16的3D而不改变内存分配所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。