我有一个C文件,我在Objective-C中为iOS应用程序调用。 C代码执行UPNP发现协议并返回找到的所有主机的数组。当我从Objective-C执行代码时,我有时会得到一个EXC_BAD_ACCESS而我有时却没有。主要问题在下面的代码中(在strncpy上):
char *scanUPNP (int argc, char *argv[]) {
char **hostarray = (char **)malloc(sizeof(char *) * MAX_NUM_HOSTS);
struct str_vector my_vector;
parse_cmd_opts(argc, argv);
str_vector_init(&my_vector);
discover_hosts(&my_vector, hostarray);
printf("\nHost Discovery Complete\n\n");
char* fatString = (char *)malloc(sizeof(char)* MAX_NUM_HOSTS * 18);
int i = 0;
for (; i < MAX_NUM_HOSTS; i++) {
char *tmp = (char *)malloc(sizeof(char) * 10);
if (hostarray[i] != NULL) {
strncpy(tmp, hostarray[i], strlen(hostarray[i]));
strncat(tmp, "\n", 1);
strncat(fatString, tmp, strlen(tmp));
} else {
break;
}
}
printf("IN C FOR UPNP: %s\n", fatString);
str_vector_free(&my_vector);
return fatString;
}
网站上还有其他资源,但它们似乎都没有特定的解决方案。主要是内存问题。提前谢谢!