我从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)
。您需要在函数之外(不再使用此字符串的时间)释放它。