簡體   English   中英

指向指針的指針分配,然后迭代會導致分段錯誤

[英]Pointer to pointer allocation then iteration causes segmentation fault

我的以下代碼有問題。 我很確定這是正確的。 我試圖將內存分配給函數中的指針,然后使用for循環將數據寫入同一函數中的分配內存。 但是,當計數器在for循環上達到2時,會導致分段錯誤,或者我嘗試在循環中設置一堆值或從中讀取值。

是的,我已經在StackOverflow上進行了研究,但是我發現以下答案沒有太大幫助。 * 如何分配內存並將其(通過指針參數)返回給調用函數?

#include <cassert>
#include <cstdlib>
#include <cstdio>

typedef unsigned char uint8_t;

void allocMem(uint8_t **i){
    *i = new uint8_t[10];
    for(int j = 0; j < 10; j++){
        printf("%d\n", *i[j]);
        //*i[j] = j * 2;
    }
}

int main(){
    uint8_t *i = 0;
    allocMem(&i);
    assert(i != NULL);
    delete[] i;
}

優先錯誤:

printf("%d\n", *i[j]);

應該

printf("%d\n", (*i)[j]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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