假设有一个指向浮点值数组的指针: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
?