从C中的字符串开头删除char的成本较低的方法是什么?

h0m*_*0m3 0 c string strdup dynamic-memory-allocation

我必须创建一个非常便宜的算法(处理器和内存)来char从C中删除第一个字符串(char数组).

我目前正在使用:

char *newvalue = strdup(value+1);
free(value);
value = newvalue;
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些较便宜的方法可以做到这一点.字符串value是动态分配的.

Olo*_*iar 5

value+1是一个char*表示删除了第一个字符的字符串.这是获得这种字符串的便宜方式..

在释放内存时你必须要小心,以确保释放原始指针而不是移位指针.

  • 只有两个字符串都是不可变的. (2认同)
  • @BlagovestBuyukliev:问题显示原始字符串被释放,因此不再需要它.因此,`value + 1`处的字符串不一定是不可变的; 它可以根据需要进行修改,并且它对原始字符串的影响是无关紧要的,因为原始字符串不会再次使用. (2认同)