2

谁能解释我为什么在那个 c++简单代码上valgrind 返回this

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

Source and destination overlap in memcpy (line 8)

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

我不知道我做错了什么。

4

1 回答 1

1

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

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

使用 boost 库,您可能不得不相信他们也知道自己在做什么。该库有很多针对不同编译器的配置,并且可能还使用特定的 g++ 扩展。

于 2011-07-01T19:54:56.413 回答