Проблема в том, что ваша функция methodName
назначает новый указатель для своей локальной копии myArray.
Быстрое решение состоит в том, чтобы сделать myArray указателем на указатель следующим образом:
void methodName(unsigned int **myArray, unsigned int num_ints)
{
if((*myArray = (unsigned int *)realloc((*myArray), sizeof(unsigned int)*(num_ints*4)*3)) == NULL)
{
std::cout << "Realloc failed!" << std::endl;
exit(0);
}
}
, а затем позвоните, передав адрес myArr:
methodName(&myArr, n_ints);
Таким образом methodName получает адрес памяти main()
s myArr, чтобы он мог писать в него.
Однако, как вы можете видеть, наличие параметров функции, которые выводят значения, может стать немного запутанным, поэтому я предлагаю вместо этого return
новый адрес:
unsigned int *methodName(unsigned int *myArray, unsigned int num_ints)
{
return (unsigned int *)realloc(myArray, sizeof(unsigned int) * (num_ints * 4) *3);
}
Тогда это просто вопрос перезаписи myArr
в main
:
myArr = methodName(myArr, n_ints);