Вы передаете функции выражение &ptr
, которое имеет тип int **
.
exampleFunction(&ptr);
Но параметр функции имеет тип int *
.
void exampleFunction(int *ptr)
Таким образом, объявление функции и ее вызов не имеют смысла.
Вы должны объявить и определить функцию, по крайней мере, как
//this function reallocates the memory block of ptr
void exampleFunction( int **ptr)
{
*ptr = realloc( *ptr, (sizeof(int) * 10));
}
Хотя будет лучше использовать временный указатель с вызов realloc
, потому что функция может вернуть NULL
. В этом случае первоначальное значение *ptr
будет потеряно.
Поэтому вы должны объявить функцию как
//this function reallocates the memory block of ptr
int exampleFunction( int **ptr)
{
int *tmp = realloc( *ptr, (sizeof(int) * 10));
int success = tmp != NULL;
if ( success ) *ptr = tmp;
return success;
}