我有一個簡單的練習(用 C 語言):two_3.c
程式采用一個包含三個分量的向量,并將每個分量加倍。除錯器顯示我這個綠色的警告(綠色波浪線):C6011 dereferencing null pointer v.在這一行:v[0] = 12;。我認為這是一個錯誤,因為在除錯器中我閱讀了the program exited with code 0. 你怎么看待這件事?
#include <stdlib.h>
# include <stdint.h>
void twice_three(uint32_t *x) {
for (size_t i = 0; i < 3; i) {
x[i] = 2 * *x;
}
}
int main(void) {
uint32_t *v = malloc(3 * sizeof(uint32_t));
v[0] = 12;
v[1] = 59;
v[2] = 83;
twice_three(v);
free(v);
return 0;
}
uj5u.com熱心網友回復:
我相信您的 IDE 正在警告您,您沒有確保malloc回傳NULL. 當您用完要分配的記憶體時malloc可以回傳NULL。
是否需要這樣的檢查是有爭議的。萬一malloc回傳NULL,您的程式最終會被殺死(在具有虛擬記憶體的現代計算機上)。所以問題是在非常罕見的記憶體不足的情況下,您是否想要一個干凈的訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/356250.html
上一篇:索引運算子對任意指標有什么作用?
下一篇:C指標復制
