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

HSc*_*ale 1 c++ pointers

我遇到以下代码问题.我很确定这是正确的.我正在尝试将内存分配给函数中的指针,然后使用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;
}
Run Code Online (Sandbox Code Playgroud)

DrC*_*DrC 6

优先级错误:

printf("%d\n", *i[j]);
Run Code Online (Sandbox Code Playgroud)

应该

printf("%d\n", (*i)[j]);
Run Code Online (Sandbox Code Playgroud)