2

誰かがそのc++で単純なコードvalgrindがこれを返す理由を私に説明できますか?

最初の問題はboost:regexにあります。疑問符の付いたサブパターンを使用すると(オプションのマッチング用)、valgrindは次を返します:

Source and destination overlap in memcpy (line 8)

2番目の問題はstd::string::eraseにあります。

何が間違っているのかわかりません。

4

1 に答える 1

1

ライブラリコードはmemcpy、厳密に移植可能であるために、を使用する必要がある場合に使用しているようmemmoveです。

std :: stringのようなコンパイラのライブラリの場合、そのコードは他のコンパイラに移植可能である必要はなく、特定の実装がどのように機能するかについての知識を使用できるため、これはおそらく問題ありません。

Boostライブラリを使用すると、おそらく、彼らが何をしているのかを知っていることを信頼する必要があります。ライブラリには、さまざまなコンパイラ用の多くの構成があり、特定のg++拡張機能を使用する場合もあります

于 2011-07-01T19:54:56.413 に答える