1

I'm having issues with the following code. I'm pretty sure it's correct. I'm trying to allocate memory to a pointer in a function, then write data to the allocated memory in that same function with a for loop. But when the counter reaches 2 on the for loop, it causes a segmentation fault, or I try to set a bunch of values in a loop or read from it.

Yes, I have researched this on StackOverflow, but I didn't find the following answers too helpful. * How can I allocate memory and return it (via a pointer-parameter) to the calling function?

#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;
}
Community
  • 1
  • 1
HSchmale
  • 1,838
  • 2
  • 21
  • 48

1 Answers1

6

Precedence error:

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

should be

printf("%d\n", (*i)[j]);
DrC
  • 7,528
  • 1
  • 22
  • 37