const char *и свободный()

Учитывая следующий пример кода, я не могу освободить параметрconst char* expression:

// removes whitespace from a characterarray
char* removewhitespace(const char* expression, int length)
{
    int i = 0, j = 0;
    char* filtered;
    filtered = (char*)malloc(sizeof(char) * length);
    while(*(expression + i) != '\0')
    {
        if(!(*(expression + i) == ' '))
        {
            *(filtered + j) = *(expression + i);
            j++;
        }
        i++;
    }
    filtered[j] = '\0';
    free(expression); //this doesn't seem to work
    return filtered;
}

Прежде чем вернуть эту функцию, я пытаюсь освободить данные в параметре выражения, но не могу их освободить.
Я думаю, что это, вероятно, потому, что это константа, но я узнал, что массив символов в C всегда должен быть константой.

Сообщение об ошибке, которое я получаю, находится в строке с free(expression), а сообщение:
expected void* but argument is of type const char * - compiler error

Как сбросить память, содержащуюся в данных expression?

5
задан Eitan T 16 June 2012 в 02:10
поделиться