指针到指针的分配然后迭代会导致分段错误

Pointer to pointer allocation then iteration causes segmentation fault

本文关键字:指针 分段 错误 迭代 分配 然后      更新时间:2023-10-16

我对以下代码有问题。我确信这是正确的。我试图将内存分配给函数中的指针,然后用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("%dn", *i[j]);
        //*i[j] = j * 2;
    }
}
int main(){
    uint8_t *i = 0;
    allocMem(&i);
    assert(i != NULL);
    delete[] i;
}

优先级错误:

printf("%dn", *i[j]);

应该是

printf("%dn", (*i)[j]);