[10000、1000000]の範囲のサイズのランダムなfloatを含むAという名前の配列があります。この配列は私の関数に対してランダムに生成された引数であり、それを操作するために、効率的な方法で10000個のゼロをプリエンプティブに追加/パディングしようとしています。Aに割り当てられたメモリを追加するとヒープが破損するのではないかと心配しているので、代わりに新しいメモリ、memcopy A、および新しい配列のmemset10000末尾のfloatを0.0に割り当てます。
void *ArrayPadder(float *A){
int pad = 10000;
float *Apadded = (float*)malloc((sizeof(A)+pad)*sizeof(float));
memcpy(Apadded, A, sizeof(A));
memset(Apadded+sizeof(A), 0.0, pad);
return Apadded;
}
誰かがこれを達成するためのより効率的な方法を提案できますか?
編集:遅延についてお詫びしますが、いくつかの説明を追加しました。正しいメモリスペース(510000フロート)を事前に割り当てることができない理由は、配列が実際にはランダムなサイズであり、ランダムなフロートを含んでいるためです。質問を単純化するために500000を選択しましたが、現在は修正されています。