我有重叠的char *问题。

我正在低内存环境(即Arduino)中工作,我想使用尽可能少的内存。我希望能够在一个字符串的前面加上另一个,并且在不复制任何浪费内存的变量的情况下做到这一点。

这是标准的C或C ++。

char* bigPacket = (char*)malloc(25);   //Makes a big string of length 25
char* payload = bigPacket + 2;         //This is part of the big string, 2 chars in.
bigPacket[0] = 72;                     // Letter 'H'
bigPacket[1] = 72;                     //I'm expecting the final bigPacket to read    "HHHello, world"
payload = "Hello, World";
print(bigPacket);


但是问题在于它没有按原样打印“ HHHello,世界”。相反,它仅打印“ HH”。是否有适当的方法使其能够重叠这些字符串以打印“ HHHello,world”?

最佳答案

您更改了payload指向的位置。您需要做的就是将payload保留下来,并更改它指向的数据。

strcpy(payload, "Hello World");


编辑:如果您确实想避免复制,则最终会得到类似SGI Rope类的信息。但是您会付出很多代码复杂性。

09-10 23:01