【发布时间】:2016-05-31 21:06:31
【问题描述】:
我有一些数组,
float *large_float_array;
我调用并在循环后尝试 memset
large_float_array = (float*)calloc(NUM, sizeof(float));
// .. do stuff with float array
memset(large_float_array, 0, sizeof(large_float_array);
// .. do other stuff
但似乎large_float_array 实际上并没有归零。为什么是这样?这是由于浮点数的特殊性质吗?如果是这样,我想知道如何解决这个问题。
附: calloc 真的在这里工作吗?
【问题讨论】:
-
我刚刚找到 this ,为我的问题提供了一些见解。
-
memset(large_float_array, 0, sizeof(large_float_array);无法编译。总是愿意发布真实的代码。 -
C 不强制要求浮点数是 ieee754。因此,我相信标准中不能保证
0.0f按位为零。 -
large_float_array = (float*)calloc(NUM, sizeof(float));-->large_float_array = calloc(NUM, sizeof *large_float_array); -
所以大家一致认为memset在浮点数组上没问题,只要我指定正确的大小?编辑:@chux 为什么要改变?