[英]Segmentation fault when using malloc to create array of pointers to pointers
我在動態創建“多維數組”時遇到問題。 我已經閱讀了comp.lang.c FAQ上的6.14,並且正在遵循那里列出的代碼。
cache_array = malloc(cm_blks * sizeof(int *));
if (cache_array = NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
for (i = 0; i < cm_blks; i++) {
cache_array[i] = malloc(6 * sizeof(int));
if (cache_array[i] == NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
}
在我的測試案例中,變量cm_blks是一個整數,等於8。cache_array初始化為:
int **cache_array;
代碼可以正常編譯,但是在運行輸出時,在第二個malloc行出現了段錯誤。
這不是一個相等檢查,而是一個賦值 :
if (cache_array = NULL)
它將cache_array
設置為NULL
,並且由於賦值的結果本質上為false,因此不進入if
分支。 然后,代碼繼續取消引用NULL
指針。
改成:
if (cache_array == NULL)
要么:
if (!cache_array)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.