错误:memcpy |
您所在的位置:网站首页 › memcpy翻译 › 错误:memcpy |
错误:memcpy-param-overlap
项目
03/22/2024
地址清理器错误:memcpy-param-overlap CRT 函数memcpy不支持重叠内存。 CRT 为支持重叠内存的 memcpy 提供了替代方法:memmove。 常见的错误是将 memmove 视为语义上等效于 memcpy。 示例 // example1.cpp // memcpy-param-overlap error #include __declspec(noinline) void bad_function() { char buffer[] = "hello"; memcpy(buffer, buffer + 1, 5); // BOOM! } int main(int argc, char **argv) { bad_function(); return 0; }若要生成并测试此示例,请在 Visual Studio 2019 版本 16.9 或更高版本的开发人员命令提示符中运行以下命令: cl example1.cpp /fsanitize=address /Zi /Oi devenv /debugexe example1.exe/Oi 标志指示编译器将 memcpy 和 memmove 视为内部函数。 这是必要的,因为某些版本的标准库以相同方式实现 memcpy 和 memmove。 由于 ASAN 是动态分析工具,因此它仅检测具有可见的运行时效果的错误。 生成的错误另请参阅 AddressSanitizer 概述 AddressSanitizer 已知问题 AddressSanitizer 生成和语言参考 AddressSanitizer 运行时参考 AddressSanitizer 阴影字节 AddressSanitizer 云或分布式测试 AddressSanitizer 调试程序集成 AddressSanitizer 错误示例 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |