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

时间:2011-07-01 19:12:09

标签: c++ regex boost valgrind overlapping

任何人都可以解释为什么c ++ simple code valgrind返回this

第一个问题是提升:正则表达式。当我使用带有问号的子模式时(对于可选匹配),valgrind将返回:

Source and destination overlap in memcpy (line 8)

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

我不知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

似乎库代码正在使用memcpy,为了严格移植,它应该使用memmove

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

使用boost库,您可能必须相信他们也知道他们在做什么。该库为不同的编译器提供了许多配置,可能也使用特定的g ++扩展。