Calloc里面的功能

1 c pointers memory-management calloc

看看刚刚被问过的这个问题:对静态变量指针的不便会做这样的事情被认为是不好的做法,那么呢?

char* strpart(char* string, int start, int count)
{
    char* strtemp; 
    int i = 0; int j = 0;
    int strL = strlen(string);

    if ( count == 0 )
    {
        count = strL;
    }

    strtemp = (char*) calloc((count + 1), sizeof(char));
    for ( i = start; i < (start+count); i++ )
    {
        strtemp[j] = string[i];
        j++;
    }
    return strtemp;
}
Run Code Online (Sandbox Code Playgroud)

对不起,它编写得很快,但基本原则是 - 当在函数内部不使用静态缓冲区时,在函数内部分配内存是不好的做法吗?我假设是因为它不会被释放,是吗?以为我应该问.

R S*_*hko 5

这不是坏事,但它很容易造成内存泄漏(调用者必须记住释放内存).

我喜欢做的一件事是使用命名约定来指示哪些函数可以分配.例如,我将该功能命名为:

char* strpart_alloc(char* string, int start, int count)
Run Code Online (Sandbox Code Playgroud)