Visual Studio C++ 内存对齐问题

 

使用VS C++ 默认项目模板生成的项目,通常包含Rlease/Debug两种配置。在默认设置下的两种配置编译出的Dll库的数据对齐方式不一样,可能接口在传递字符串、类时发生各种内存错误。

解决方法

那么如何在Debug下与Release下使用相同的内存对齐方式?最简单的解决方案如下:

  1. 打开项目设置。
  2. C/C++ > 预处理器 > 预处理定义,去掉_Debug宏。
  3. C/C++ > 代码生成 > 运行库,选择 多线程DLL(/MD)。

内存未对齐的常见错误表现

  1. 传递字符串数据时,直接出现内存错误。
  2. 传递数据结构或类时,出现数据变化。