Функции длинной версии cholmod возвращают нулевой указатель - c программирование

Я использую SuiteSparse @4.2.1_3, установленный через macports, и хочу выделить структуру cholmod_dense. Рассмотрим следующий фрагмент кода:

/* 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 структура в длинной версии не работает, но целочисленная версия работает хорошо. Кто-нибудь знает причину, почему это происходит?

1 ответ

Вы должны установить правильный тип в 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.  */
Другие вопросы по тегам