Учитывая следующий пример кода, я не могу освободить параметр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
?