WINCE ARM Datatype misalignment 问题

news/2024/7/10 5:27:14 标签: wince, crash, 编译器, x86, 优化, 存储

在arm处理器上,运行程序会遇到Datatype misalignment问题而crash,而同一代码在x86 win32环境上编译后运行良好;
其实不管是x86还是arm都会遇到Datatype misalignment问题,比如d3dx用到sse指令优化的D3DXMATRIX时,需要这个变量16字节对齐,否则可能会crash
同一问题在arm上会更明显,因为arm的硬件处理可能没有pc机cpu这么强悍,针对arm的编译器可能也没这么强悍,这就需要我们写代码时候更健壮,考虑更多;
比如下面的代码就比较糟糕:
char buf[71];
int* pItem=&buf[11];
很有可能刚好,这个pItem的地址为奇数,或者不是4的倍数(32位系统),这样就遇到了 Datatype misalignment 问题,好的办法是,不要瞎转指针,需要是用union,这样编译器就能生成比较靠谱的代码

check this
老外的详细解释:
http://blogs.msdn.com/grantri/archive/2004/07/14/183524.aspx



//另外在vc种设置“结构成员对齐”,如果不改动,是默认值,就是8bytes对齐,
/Zp(结构成员对齐)
当指定此选项时,第一个结构成员后的每个结构成员将存储在成员类型大小或 n 字节边界(其中 n 为 1、2、4、8 或 16)两者中较小的一个边界上。
也就是说,如果是指定16bytes对齐,实际代码是如果遇到一个成员是int,其实这个成员对齐是4的倍数的地址,就可以了。。。。不是16,呵呵;


http://www.niftyadmin.cn/n/1403797.html

相关文章

快速排序算法Java

<p>快速排序排序相对于普通排序算法效率很高&#xff0c;特别是对于大数据优势体现的相当明显</p><p>下面是java程序</p><p><span style"BACKGROUND-COLOR: #ffffff">主程序&#xff1a;</span></p> import java.ut…

DrawText如何使多行文字居中

&#xff08;1&#xff09;DT_WORDBREAK 只能截断单词。例如如果输入一连串英文字符&#xff0c;那么它会当做一个单词来处理&#xff0c;而不会自动换行。而对于中文字符则可以。如果要对所有字符都可以像Edit控件中那样自动换行&#xff0c;那么可以使用DT_WORDBREAK | DT_ED…

Android中实现拨打电话、发送短信、响铃、震动和获取当前时间

如果要实现以下功能&#xff0c;需先在Androidmainifest.xml中注册来获取权限&#xff0c;xml代码如下&#xff1a; <uses-permission android:name"android.permission.SEND_SMS"/> 请求获取发送短信权限<uses-permission android:name"android.perm…

error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CchatDlg::* )(CPoint)' to 'UI

出现这个错误的原因可是“人力不可抗拒”之原因造成的&#xff0c;因为旧版本的 ON_WM_NCHITTEST 宏使用了 UINT (__thiscall CWzButton::* )(CPoint); 类型的类成员函数指针&#xff0c;其定义如下&#xff1a; #define ON_WM_NCHITTEST() / { WM_NCHITTEST, 0, 0, 0, Afx…

装系统之ThinkpadE450

工具&#xff1a;U盘、Windows8.1系统&#xff08;可在系统之家下载&#xff09; 装系统会格式化C盘&#xff0c;注意保存重要数据 步骤&#xff1a; 1.制作老毛桃U盘&#xff0c;这一步很简单&#xff0c;在老毛桃官网下载个制作工具即可&#xff0c;安装之后一键制作即可 …

Android实践——使用Bmob实现登录、注册等功能

Bmob云可以用于云端数据库&#xff0c;使用方便简单&#xff0c;只需要我们在Bmob云注册之后&#xff0c;获取产品apk即可&#xff0c;下面代码就简单介绍了一下 我们可以写一个User类&#xff0c;包含name、password import cn.bmob.v3.BmobObject; import cn.bmob.v3.listen…

CDC

CDC 是MFC中绘图有关的类CObject └CDC CDC类定义的是设备上下文对象的类。 CDC对象提供处理显示器或打印机等设备上下文的成员函数&#xff0c;以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 类对设备上下文操作提供了成员函数&#x…

【设计模式】之 概述

软件设计模式系列文章是我在学习刘伟先生编著的《设计模式的艺术之道》之后的一些经验总结&#xff0c;希望对大家理解设计模式有一些帮助。设计模式是一套被反复利用的&#xff0c;多数人知晓的&#xff0c;经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了…