簡體   English   中英

使用malloc創建指向指針的數組時出現分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM