디버깅하려는 C에 LDA 코드가 있는데 지금 당장 머리를 부딪 혔습니다.함수에서 반환 된 값을 재 할당하면 seg 오류가 발생합니다.
lda_model *model = NULL;
model = malloc(sizeof(lda_model));
model = quiet_new_lda_model(corpus->num_terms, NTOPICS);
printf ("%f\n", model->alpha); // Segfaults here
우리가 quiet_new_lda_model
기능과 원래 발신자 사이의 거래에서 문제가 될 수 무엇 모델 생성 기능
lda_model* quiet_new_lda_model(int num_terms, int num_topics) {
int i;
lda_model* model;
model = malloc(sizeof(lda_model));
model->num_topics = num_topics;
model->num_terms = num_terms;
model->alpha = 1.0;
printf ("%f\n", model->alpha); // Prints 1.0
model->log_prob_w = malloc(sizeof(double*)*num_topics);
for (i = 0; i < num_topics; i++)
{
model->log_prob_w[i] = malloc(sizeof(double)*num_terms);
memset(model->log_prob_w[i],0,sizeof(double)*num_terms);
}
printf ("%f\n", model->alpha); // Prints 1.0
return(model);
}
보면?
감사합니다.
하지 실패의 malloc()를 확인의 팬이 도움이 될 것입니다 change..Maybe에 대한 '% f를'반대로 '% ld 개'를 사용해보십시오, 나는 ... 볼 – Josh
을 주석 model-> log_prog_w를 처리하고 여전히 충돌하는지 확인하는 코드 – James