If you want to add memory to a pointer from a function, you need to pass the address of the pointer (ie. double pointer). code example
Example: double pointers C++
#include <stdio.h>
int main(void)
{
int value = 100;
int *value_ptr = &value;
int **value_double_ptr = &value_ptr;
printf("Value: %d\n", value);
printf("Pointer to value: %d\n", *value_ptr);
printf("Double pointer to value: %d\n", **value_double_ptr);
}