2014-07-11 8 views
0

macports를 통해 설치된 SuiteSparse @ 4.2.1_3을 사용하고 있으며 cholmod_dense 구조를 할당하려고합니다. 다음 코드 조각을 고려하십시오cholmod 긴 버전 함수는 널 포인터를 반환합니다. -c 프로그래밍

/* start CHOLMOD */ 
cholmod_common c; 
cholmod_dense* myv; 
cholmod_dense* myv2; 

cholmod_start (&c); 
myv = cholmod_l_allocate_dense(4,1,4,CHOLMOD_REAL,&c); 
myv2 = cholmod_allocate_dense(4,1,4,CHOLMOD_REAL,&c); 
printf("myv=%p\n",myv); 
printf("myv2=%p\n",myv2); 

/* finish CHOLMOD */ 
cholmod_finish (&c) ; 

나는 다음과 같은 출력을 얻을 :

myv=0x0 
myv2=0x7fb86ac0c060 

긴 버전의 cholmod_dense 구조가 작동하지 않고 정수 버전은 잘 작동 할당을 의미합니다. 누군가 이런 일이 발생하는 이유를 알고 있습니까?

답변

0

cholmod_common 구조에 올바른 유형을 설정해야합니다. c.

c.itype=CHOLMOD_LONG; 

/* Common->itype and Common->dtype are used to define the types of all 
* sparse matrices, triplet matrices, dense matrices, and factors 
* created using this Common struct. The itypes and dtypes of all 
* parameters to all CHOLMOD routines must match. */