错误:memcpy

您所在的位置:网站首页 memcpy翻译 错误:memcpy

错误:memcpy

2024-04-20 12:44| 来源: 网络整理| 查看: 265

错误: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