静的配列を返すように作成した関数がありますが、効率を上げるために動的配列を返すようにする方法はありますか?
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int *charpos(char *str, char ch)
{
    int *bff, bc, ec, i, strln;
    static int ret[255];
    bc = 0;
    ec = 0;
    for(i = 0; str[i] != '\0'; i++)
        ;
    strln = i;
    for(i = 0; i <= strln; i++)
    {
        if(str[i] == ch)
            ec++;
    }
    bff = malloc(sizeof(int)*ec);
    if(sizeof(bff) > sizeof(ret))
    {
        free(bff);
        return 0;
    }
    for(i = 0; i <= 255; i++) ret[i] = '\0';
    for(i = 0; i <= strln; i++)
    {
        if(str[i] == ch)
        {
            ret[bc] = i;
            bc++;
        }
    }
    free(bff);
    return ret;
}