C when to allocate and free memory - before function call, after function call...etc

Posted by Keith P on Stack Overflow See other posts from Stack Overflow or by Keith P
Published on 2010-06-08T14:22:40Z Indexed on 2010/06/08 14:32 UTC
Read the original article Hit count: 223

Filed under:
|
|

I am working with my first straight C project, and it has been a while since I worked on C++ for that matter. So the whole memory management is a bit fuzzy.

I have a function that I created that will validate some input. In the simple sample below, it just ignores spaces:

int validate_input(const char *input_line, char* out_value){

    int ret_val = 0; /*false*/
    int length = strlen(input_line);
    cout << "length = " << length << "\n";
    out_value =(char*) malloc(sizeof(char) * length + 1);

    if (0 != length){

        int number_found = 0;
        for (int x = 0; x < length; x++){

            if (input_line[x] != ' '){ /*ignore space*/

                /*get the character*/
                out_value[number_found] = input_line[x];
                number_found++; /*increment counter*/
            }
        }
        out_value[number_found + 1] = '\0';

        ret_val = 1;
    }

    return ret_val;

}

Instead of allocating memory inside the function for out_value, should I do it before I call the function and always expect the caller to allocate memory before passing into the function? As a rule of thumb, should any memory allocated inside of a function be always freed before the function returns?

© Stack Overflow or respective owner

Related posts about c++

Related posts about c