假设有一个指向浮点值数组的指针:float *source;我们知道它的大小为int sourcesize;
有一个已经实现的函数,它souce从以下位置向数组添加一个元素inputVec:
void addRecord(const float* inputVec, int& sourcesize)
{
int inputVecSize = sourcesize;
memmove( (float*)&(source[inputVecSize]), inputVec, sizeof(float));
}
现在,我想从m源数组的第 th 个元素中复制 1 个元素并将其附加到源端。通过使用上面的 addRecord,我实现了如下功能:
// suppose m is smaller than the current sourcesize
void copyRecord(const float* source, int& m)
{
float* temporary = new float;
memcpy( temporary, (float*)&(source[m]), sizeof(float));
addRecord(temporary, sourcesize);
delete temporary;
}
看来函数memmove中的调用addRecord可能会共享临时变量位置。因此,也许我最终不应该删除temporary。但我想也许他们不共享相同的地址,那么temporary在这种情况下我应该删除。
那么,到底该不该删temporary呢?
source或者,有没有更好的方法通过使用函数将元素从数组复制到其末尾addRecord?