2017-12-17 17 views
0

다음 코드leftCols 같은 행렬에 할당 분할 오류

#include "Eigen/Dense" 
#include <iostream> 
using namespace Eigen; 

int main(int argc, char**) { 

    MatrixXf A = MatrixXf::Random(4096, 4096); 
    MatrixXf B = A.leftCols(1000); // <-- works fine 
    std::cout << "--------" << std::endl; 
    A = A.leftCols(1000); // <-- SegFault 
} 

같은 행렬에 leftCols의 결과를 할당에 문제가 있습니까 참조 원인이 될?

GCC - 4.8.4 (사용에는 공간적 플래그 없음)
우분투 - 14.04
아이겐 - 3.3.4

답변

0

이것은 다음 aliasing 대상 A 먼저 리사이즈 operator=의 문제 및 표현 A.leftCols(1000)이 유효하지 않습니다.

A.conservativeResize(NoChange,1000); 

또는 임시 소개 :

A = A.leftCols(1000).eval(); 
을 당신은 conservativeResize를 호출 할 필요가