我从SO和其他一些有关c中的free()函数的文章中读到了很多问题,这些文章释放了未使用的变量的内存。就我而言,我有以下代码块。

char *injectStrAt(char *str, char *strToIn, int pos)
{
    char *strC = malloc(strlen(str) + strlen(strToIn) + 1);
    strncpy(strC, str, pos);
    strC[pos] = '\0';
    strcat(strC, strToIn);
    strcat(strC, str + pos);
    return strC;
}

我使用上述函数将字符串块注入(inject)到数组中。我正在使用malloc创建一个新的char*。在上述情况下,我需要做free(strC)吗?建议

最佳答案

strC是此函数的返回值,因此您不要在函数本身内部调用free(strC)。您需要在函数之外(不再使用此字符串的时间)释放它。

10-07 12:15