Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
谁能解释我为什么在那个 c++简单代码上valgrind 返回this。
第一个问题是 boost:regex。当我使用带有问号的子模式(用于可选匹配)时,valgrind 将返回:
Source and destination overlap in memcpy (line 8)
第二个问题是 std::string::erase。
我不知道我做错了什么。
似乎库代码正在使用memcpy时,为了严格可移植,它应该使用memmove.
memcpy
memmove
对于编译器的库,如 std::string,这可能没问题,因为该代码不必移植到其他编译器,并且可以使用有关特定实现如何工作的知识。
使用 boost 库,您可能不得不相信他们也知道自己在做什么。该库有很多针对不同编译器的配置,并且可能还使用特定的 g++ 扩展。