В этой функции
int init(int num){
step = #
step_counter = *step;
return 0;
}
параметр num
является локальной переменной функции.После выхода из функции переменная не будет активной, и ее память может быть использована некоторыми другими частями программы.
В результате указатель step
будет иметь недопустимое значение, и программа будет иметь неопределенное поведение, еслион попытается получить доступ к памяти, на которую указывает указатель.
Вы можете переписать функцию следующим образом.
int init(int num){
step = malloc( sizeof( *step );
int success step != NULL;
if ( success )
{
*step = num;
step_counter = *step;
}
return success;
}
Не забудьте забыть освободить указатель перед выходом из программы..
Хотя неясно, зачем вам нужна дополнительная переменная step_counter
.
Я бы переписал фрагмент кода следующим образом
int *step;
int init(int num){
step = malloc( sizeof( *step ) );
int success = step != NULL;
if ( success ) *step = num;
return success;
}
void reset_step(){
free( step );
step = NULL;
}