使用boost在memcpy中重叠源块和目标块

Overlapping source and destination blocks in memcpy with boost

本文关键字:目标 重叠 boost memcpy 使用      更新时间:2023-10-16

有人能解释一下为什么在c++简单代码valgrind上返回这个吗。

第一个问题是boost:regex。当我使用带问号的子模式(用于可选匹配(时,valgrind将返回:

Source and destination overlap in memcpy (line 8)

第二个问题是std::string::erase。

我不知道我做错了什么。

看起来库代码使用的是memcpy,而为了严格可移植,它应该使用memmove

对于编译器的库,如std::string,这可能是可以的,因为代码不必可移植到其他编译器,并且可以使用有关特定实现如何工作的知识。

有了boost库,你可能必须相信他们也知道自己在做什么。该库有许多针对不同编译器的配置,可能也使用特定的g++扩展。