當我調試下面的代碼時,strncpy
工作正常,但只要循環退出,我看到parent_var_names
指向NULL/0xfdfdfddf
。我很困惑!奇怪的char **/calloc行爲
parent_var_names = (const char**)calloc(net->nodes[x]->num_parents, sizeof(const char*));
for(int i(1); i < net->nodes[x]->num_parents; ++i)
{
parent_var_names[i] = (const char*)malloc(strlen(rhs_arr[net->nodes[x]->markov_parents[i]]));
strncpy((char*)parent_var_names[i], (char*)rhs_arr[net->nodes[x]->markov_parents[i]], strlen(rhs_arr[net->nodes[x]->markov_parents[i]]));
}
C或C++?選一個。最好不要成爲C++。 – GManNickG 2010-10-01 20:53:38
好吧。它是一個C++編譯器。 – jmgunn87 2010-10-01 20:54:20
你確定你所有的rhs_arr [net-> nodes [x] - > markov_parents [i]]字符串都是空終止的嗎?你的parent_var_names字符串將不會。 – MerickOWA 2010-10-01 20:54:24