次のコード例では、パラメーターを解放できません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
ですか?