给定下一个代码示例,我无法释放参数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
包含的内存?