在 C 中取消引用 NULL 指针

Dereferencing NULL pointer in C

我正在尝试为 2 个长度为 1024 的浮点向量分配内存并用一些数字填充它们。 但是,我收到警告:

取消引用 NULL 指针 'fpVec1', 取消引用 NULL 指针 'fpVec2'

对于for循环中的行。执行没问题,但我不明白警告。我做错了什么吗?

int main(void){
int iLength = 1024;
int i, j;
float *fpVec1, *fpVec2, *fpVec3, *fpVec4;
fpVec1 = (float*)malloc(iLength * sizeof(float));
fpVec2 = (float*)malloc(iLength * sizeof(float));
fpVec3 = (float*)malloc(iLength * sizeof(float));
fpVec4 = (float*)malloc(iLength * sizeof(float));

for (i = 0; i < iLength;i++)
{
    fpVec1[i] = ((float)i) + 1024.0;
    fpVec2[i] = ((float)i) * 1.7;
}}

编辑:我使用的是英特尔 C++ 编译器 19。警告是在 Visual Studio 2019 专业版中生成的。当我在接受的解决方案中使用 if 语句来检查指针的有效性时,警告消失了。

根据 this post,如果您在实际 使用 指针之前检查 malloc() 返回的值,警告将消失。不幸的是,post 中的答案未被接受。

int main(void)
{
    int iLength = 1024;
    int i, j;
    float *fpVec1, *fpVec2;
    fpVec1 = (float*)malloc(iLength * sizeof(float));
    fpVec2 = (float*)malloc(iLength * sizeof(float));

    if (fpVec1 && fpVec2) {
        for (i = 0; i < iLength;i++)
        {
            fpVec1[i] = ((float)i) + 1024.0;
            fpVec2[i] = ((float)i) * 1.7;
        }
    }
    free(fpVec1);
    free(fpVec2);
}