当前位置: 首页 > news >正文

2506,字节对齐

原文
客户发现,如果他们传递的统一串(在窗口中是指,按使用双字节数据类型的wchar_t作为代码单元UTF-16LE编码的串),不在偶数地址上,则某些(但不是全部)函数无法接受这些串.
为什么没有记录?

这是编程的基本规则之一:除非显式允许,否则指针必须正确对齐.
C/C++语言中,显式按不返回任何有用的值指定构成未对齐的指针.
C中:
如果生成的指针没有正确对齐引用的类型,则行为未定义.
C++中:
expr.static.cast中,如果原始指针值表示内存中字节的A地址,且A不满足T的对齐要求,则未指定生成的指针值.

因此,简单创建一个未对齐的指针已将你带到允许的(在C中)或至少有意义的(在C++中)操作之外,因此使用未对齐的指针会导致无意义,不应感到惊讶.

至于为什么某些函数其他函数更不安,这完全根据这些函数如何使用指针及谁检测到未对齐的指针.

如果你正在使用对齐敏感处理器,当代码试从该指针读取数据时,就会失败.如果在用户模式下访问,会得到访问冲突异常,且进程可能会崩溃.

如果在内核模式下访问,则内核模式验证参数器可能会返回无效的参数错误.内核模式必须保护自身免受用户模式的影响.

如果你使用的处理器可容忍,未对齐的数据访问,则临时摆脱它,直到代码对需要对齐的数据执行某些作.如,原子操作一般需要对齐数据,即使在一般允许错位的处理器上也是.

尽管x86-64一般对对齐持宽容态度,但仍有一些地方对对齐敏感.如,一些涉及SIMD寄存器的指令需要对齐.
SIMD寄存器一般用来复制内存块,因为wchar_t2字节对齐,因此用来复制块的语句在16个中只有8个合法起点,因为所有奇数地址都是无效的.
如果你传递一个奇数地址,则很可能会通过语句并执行垃圾复制.
微软C++编译器有一个特殊的非标准的__unaligned关键字,用来声明,可能未对齐指针,这告诉编译器任何访问该指针背后数据,都必须使用对齐宽容的指令.
对某些处理器,非常贵.

在显式允许未对齐指针的位置上,限制使用未对齐指针.可通过查找窗口SDKUNALIGNED宏来查找这些位置.如:

LWSTDAPI_(int)SHFormatDateTimeA(_In_ const FILETIME UNALIGNED * pft,//.._Inout_opt_ DWORD * pdwFlags,_Out_writes_(cchBuf) LPSTR pszBuf,UINT cchBuf);
http://www.lqws.cn/news/176617.html

相关文章:

  • 【配置 YOLOX 用于按目录分类的图片数据集】
  • 96. 2017年蓝桥杯省赛 - Excel地址(困难)- 进制转换
  • transformer和 RNN以及他的几个变体区别 改进
  • cnn卷积神经变体
  • 豆包和deepseek 元宝 百度ai区别是什么
  • 大语言模型提示词(LLM Prompt)工程系统性学习指南:从理论基础到实战应用的完整体系
  • 大数据学习(132)-HIve数据分析
  • 【LLMs篇】14:扩散语言模型的理论优势与局限性
  • 海康工业相机文档大小写错误
  • vite配置@别名,以及如何让IDE智能提示路经
  • 亚矩阵云手机实测体验:稳定流畅背后的技术逻辑​
  • RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
  • Visual Studio 中的 MD、MTD、MDD、MT 选项详解
  • Neo4j 集群管理:原理、技术与最佳实践深度解析
  • MVC与MVP设计模式对比详解
  • ABP VNext 与 Neo4j:构建基于图数据库的高效关系查询
  • Spring Cloud 2025.0.0 Gateway迁移全过程详解
  • 【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
  • 在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
  • 20250606-C#知识:List排序
  • LangChain【6】之输出解析器:结构化LLM响应的关键工具
  • Vue3 卡片绑定滚动条 随着滚动条展开效果 GSAP动画库 ScrollTrigger滚动条插件
  • 【数据结构】B树
  • 【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
  • 安装VUE客户端@vue/cli报错警告npm WARN deprecated解决方法 无法将“vue”项识别为 cmdlet、函数
  • vue+elementui 网站首页顶部菜单上下布局
  • 408第一季 - 数据结构 - 栈与队列的应用
  • R²ec: 构建具有推理能力的大型推荐模型,显著提示推荐系统性能!!
  • 市面上哪款AI开源软件做ppt最好?
  • 思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发