0

動的配列を含む構造があります。これらの構造のうち 2 つを定義しました。

最初の構造体に配列を入力し、次のような行を使用します

memcpy(R->v, A->v, A->n*sizeof(double)

ここで、v は動的に割り当てられた配列で、n はエントリの数です。

それが重要な場合、R と A は同じ型です。

問題は、値が R に適切にコピーされていないことです。これを totalview でデバッグしようとすると、memcpy は「very_huge_loop」という関数に入りますが、例外も何もスローされません。

配列の長さは約 188k 倍です。

ありがとう

4

1 に答える 1

1

それはメモリアラインメントかもしれません。一部のアーキテクチャでは、マルチバイト値がdouble任意のバイト アドレスで始まることを好みません。memalign()配列メモリを割り当てるとき、 の代わりに のような関数を使用したい場合がありますmalloc()。使用している場合はnew double[n]、すでに正しく配置されているはずです。

于 2010-06-28T21:43:40.210 に答える