2011-07-01 5 views
2

誰も私にその理由を説明できますか?simple code valgrindはthisを返します。memcpyのソースブロックと宛先ブロックが重複しています。

最初の問題はboost:regexです。私は(オプションのマッチングのための)疑問符付きサブパターンを使用する場合valgrindのは戻ります:

Source and destination overlap in memcpy (line 8)

第二の問題は、のstd ::文字列::消去です。

私は何が間違っているのか分かりません。

+0

私はあなたが間違っているとは思わない。これは正規表現ライブラリの最適化によるものだとは思いますが、私はこれをコメントとして残しておきます。 –

答えて

1

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

std :: stringのようなコンパイラのライブラリについては、他のコンパイラに移植する必要がなく、特定の実装がどのように機能するかについての知識を使用できるため、おそらく大丈夫です。

ブーストライブラリでは、おそらく彼らは彼らが何をしているのかを知っていることを信頼する必要があります。ライブラリにはさまざまなコンパイラの設定があり、でもには特定のg ++​​拡張子を使用することがあります。

関連する問題