0

だから私はEigenライブラリからこの行列を持っています.

Eigen::MatrixXd

そして、それはデータで満たされ、4x3900 ポイントです。次の行を持つ関数で使用されます。

現在、マトリックスはこのコード セットでは使用されておらず、参照用に modelPointCloud と呼ばれています。GDB を使用して、画像内の行をステップ実行します。workIndexおよび行の場合tid、行列は正しいサイズ (つまり 4x3900) です。しかし、次の行 ( idTableLock) に進むとまだ問題ありませんが、その行を実行すると、突然行列が 0x167 に変わります。これは毎回発生しますが、一見乱数です。

そのため、次のエラーが発生します。

ここに画像の説明を入力

この行で:

行列が正しいサイズではなくなったため、これは理にかなっています。

現在、他のスレッドが実行されていますが、このデータ型にアクセスできるスレッドはありません。なぜこれが起こっているのか誰にも分かりますか?マトリックスを変更するのはなぜその特定の行になるのでしょうか?

4

1 に答える 1

1

私の推測では、これはアイゲンとは何の関係もありません。私には、これはメモリの破損のように聞こえます。modelPointCloud 変数を介してメモリに直接アクセスすることはできませんが、行列のサイズを保持するメモリを上書きしている可能性があります。これらのタイプのバグは、デバッグが非常に困難です。どこかで範囲外のインデックスを使用している可能性があります。このテーマに関する他の投稿を見てください。

于 2012-10-24T18:40:03.157 に答える