修剪空间C时出现SEGFULT

修剪空间C时出现SEGFULT,c,string,C,String,你好,我有这样的代码(在stackoverflow上找到) 大体上 int main(int argc, char **argv){ char *t; t = trim_whitespace(argv[1]);; printf(";%s;\n",t); free(t); } 但现在它失败了 *** Error in `./a.out': free(): invalid pointer: 0x00000000020dd014 *** Aborted (cor

你好,我有这样的代码(在stackoverflow上找到)

大体上

int main(int argc, char **argv){


    char *t; 
    t = trim_whitespace(argv[1]);;
    printf(";%s;\n",t);
    free(t);
}
但现在它失败了

*** Error in `./a.out': free(): invalid pointer: 0x00000000020dd014 ***
Aborted (core dumped)
如果我跑

trim_whitespace(argv[1]);
一切正常,我有我想要的结果,它返回修剪过的字符串,但若我运行这样的代码

trim_whitespace("abc");
它将失败,与segfault联机

*(end+1) = '\0';
请帮我解决我的问题。非常感谢。 另外,这个函数从许多地方调用,是否可以更改smth内部的修剪空白?

修剪空白(“abc”)将尝试修改常量数据


“abc”
是一个常量,可以在常量空间中分配(即:内存中为只读访问保留的位置)。

这是一个全新的问题,现在最好针对这个问题提出一个新问题(顺便说一句:因为trim_whitespace()deosn不一定返回分配的指针)
*(end+1) = '\0';