static int check_connect(cha_lat_t *lat, int m_num) { path_cost_t pcost[PATH1_NUM]; int pcost_num, pcostno; int mrph_cost; mrph_t *new_mrph; new_mrph = nth_mrph(m_num); pcost_num = classify_path(pcost, lat->path_idx, new_mrph->con_tbl); if (pcost_num == 0) return TRUE; /* * 形態素コスト */ if (new_mrph->is_undef) { mrph_cost = Cha_undef_info[new_mrph->is_undef - 1].cost + Cha_undef_info[new_mrph->is_undef - 1].cost_step * new_mrph->headword_len / 2; } else { mrph_cost = Cha_hinsi[new_mrph->posid].cost; } mrph_cost *= new_mrph->weight * Cha_mrph_cost_weight; for (pcostno = 0; pcostno < pcost_num; pcostno++) { if (Cha_cost_width < 0) { Cha_path[Cha_path_num].best_path = pcost[pcostno].pno[0]; } else { /* コスト幅におさまっているパスを抜き出す */ int i; int npath = 0; int path[PATH1_NUM]; int cost_ceil = pcost[pcostno].min_cost + Cha_cost_width; Cha_path[Cha_path_num].best_path = pcost[pcostno].pno[pcost[pcostno].min_cost_no]; for (i = 0; i < pcost[pcostno].num; i++) if (pcost[pcostno].cost[i] <= cost_ceil) path[npath++] = pcost[pcostno].pno[i]; path[npath++] = -1; memcpy(Cha_path[Cha_path_num].path = malloc_int(npath), path, sizeof(int) * npath); } Cha_path[Cha_path_num].cost = pcost[pcostno].min_cost + mrph_cost; Cha_path[Cha_path_num].mrph_p = m_num; Cha_path[Cha_path_num].state = pcost[pcostno].state; Cha_path[Cha_path_num].start = lat->offset; Cha_path[Cha_path_num].end = lat->offset + new_mrph->headword_len; if (++Cha_path_num % CHA_PATH_NUM == 0 && malloc_path()) return FALSE; } return TRUE; }
int main() { unique_ptr<int> v1 = new_int(); unique_ptr<int, array_deleter<int> > v2 = new_int_array(); unique_ptr<int, void(*)(void *)> v3 = malloc_int(); std::cout << *v1 << std::endl; v1.reset(NULL); return 0; }
int main() { int *a; a = malloc_int(1000); a[10]=3; return 0; }