我正在嘗試為 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;
}}
編輯:我使用的是 Intel C Compiler 19。警告是在 Visual Studio 2019 專業版中生成的。當我在接受的解決方案中使用 if 陳述句來檢查指標的有效性時,警告消失了。
uj5u.com熱心網友回復:
根據這篇文章,如果您malloc()在實際使用指標之前檢查回傳的值,警告就會消失。不幸的是,該帖子中的答案未被接受。
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446151.html
上一篇:參考的定義自相矛盾
