我遇到了一个奇怪的问题,对我来说没有任何意义。
我在定义如下的 API 上有一个结构(包含字符串):
typedef struct sNCharcb
{
char * pData;
int iDataLen;
}
tsNCharcb;
我需要保存这个结构的深层副本。我创建了一个实用函数来复制这个结构:
inline sNCharcb rapi_strcpy(const sNCharcb &rapistr)
{
sNCharcb res;
res.pData = new char[rapistr.iDataLen];
strcpy(res.pData, rapistr.pData);
res.iDataLen = rapistr.iDataLen;
return res;
}
我使用此实用程序方法创建这些“sNCharcb”结构的副本并将它们保存到父对象中的引用变量:
stored_sNCharcb = rapi_strcpy(sNCharcb_to_copy);
不久之后,这些存储的值被神奇地更改为包含一些随机垃圾。存储这些值的父对象一直在作用域内,并且不会被破坏。什么可能导致这些值过早地被擦除?