是否在字符串上多次使用 _tcsncpy_s() 会覆盖旧内容?还是它创建新内容然后指向新内容?作为一个简单的例子,如果我有:
LPTSTR myString = new TCHAR[MAX_PATH];
LPTSTR copiedString1 = "Hello";
LPTSTR copiedString2 = "Rock";
_tcsncpy_s(myString,MAX_PATH,copiedString1,5); //1
//delete [] myString; //3
//LPTSTR myString = new TCHAR[MAX_PATH]; //3
_tcsncpy_s(myString,MAX_PATH,copiedString2,4); //2
我在 1 处理解:我们有 myString --> 'H' 'e' 'l' 'l' 'o'
但是在第 2 点: 'R' 'o' 'c' 'k' 是否被复制到 'H' 'e' 'l' 'l' 上,而 'o' 仍然存在?还是它现在指向内存中的一个新区域?我需要像 3 那样删除并重新创建 myString 吗?如果我先复制了String2,然后复制了String1,该怎么办?会发生什么不同的事情吗?还有什么可能有用的知道吗?
感谢您的宝贵时间,祝您有美好的一天。