【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
如标题所示,pointer指针指向一块存放数据的内存, long data1=*(long*)pointer+offset; offset+=sizeof(long); long data2=*(long*)pointer; ...... 问题是PC上程序运行正常,可这段程序移植到移动设备就出问题了,比如死机,调试跟踪发现,前几次调用可以正常转换数据,可是突然某一次就崩溃了; 请教的问题是这里的强制转换有什么隐含的隐患么?还是说移动设备的强制类型转换和PC上不一致?
引用来自“周翼翼”的答案
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
那应该是*((long*)(pointer+offset))才对吧.
所以说要用括号....
引用来自“周翼翼”的答案
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
那应该是*((long*)(pointer+offset))才对吧.
所以说要用括号....
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
那应该是*((long*)(pointer+offset))才对吧.
所以说要用括号....
引用来自“周翼翼”的答案
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
引用来自“中山野鬼”的答案
引用来自“周翼翼”的答案
那应该是*((long*)(pointer+offset))才对吧.
所以说要用括号....
移动设备的编译器, 交叉编译环境都不一样. 编译器不会生成相同的代码. 你期待它们一致本身就很幻想. 做代码实验应该在设备上做.除了平台无关的逻辑, PC上运行没意义.
话说你发帖子 注意代码正确性, 确定没有() ??
个人觉得:
offset的大小问题.在移动设备上它可能很小, 很快就溢出了.