float 値の配列へのポインターがあるとします。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
または、 function を使用して要素を配列からその末尾にコピーするより良い方法はありますaddRecord
か?