strncpy和数组上的EXC_BAD_ACCESS

时间:2016-11-29 21:18:02

标签: ios objective-c c xcode upnp

我有一个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;
}

网站上还有其他资源,但它们似乎都没有特定的解决方案。主要是内存问题。提前谢谢!

0 个答案:

没有答案