我遇到了重叠 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, world”。相反,它只打印“HH”。有没有正确的方法让它能够重叠这些字符串来打印“HHHello,world”?
最佳答案
您更改了 payload
指向的位置。您需要做的就是保留 payload
并更改它指向的数据。
strcpy(payload, "Hello World");
编辑:如果你真的想避免复制,你最终会得到像 SGI Rope 类这样的东西。但是您会在代码复杂性方面付出很多代价。
关于c++ - 重叠的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109415/