我有一个名为 A 的数组,其中包含随机浮点数,其大小在 [10000, 1000000] 范围内的任何位置。这个数组是我的函数的一个随机生成的参数,为了对其进行操作,我试图以一种有效的方式用 10000 个零抢先附加/填充它。我担心追加 A 分配的内存会破坏堆,所以我将新内存、memcopy A 和 memset 10000 在新数组中的尾随浮点数分配为 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 是为了简化问题,现在已解决。