什么时候小心使用free()来释放malloc()用过的内存?

fSa*_*azy 5 c malloc free

我在这里读了许多问题,其中一些关于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;
}
Run Code Online (Sandbox Code Playgroud)

我用上面的函数将一个字符串块注入一个数组.我正在malloc用来创造一个新的char*.在上述情况下我需要做free(strC)什么?建议请.

Yu *_*Hao 6

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