5

コード:

#include <valarray>
#include <iostream>    

using namespace std;

int main()
{
  valarray<int> v0(2, 4);
  valarray<int> v1;
  v1 = v0;
  cout << "v0.size: " << v0.size() << endl;
  cout << "v1.size: " << v1.size() << endl;
  cout << "v0[0]: " << v0[0] << endl;
  cout << "v1[0]: " << v1[0] << endl;
}

出力:

v0.size: 4
v1.size: 0
v0[0]: 2
Segmentation fault

割り当ての場合:

v1 = v0;

コンストラクターは次のようになります。

valarray<T>& operator=( const valarray<T>& other );

使用する必要があり、ドキュメントによると、v1のサイズを変更し、v0の内容を要素ごとにコピーする必要があると思います。では、実際に何が起こっているのでしょうか。

$ g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
4

1 に答える 1