Estou com problemas utilizando o realloc, quando eu aloco a primeira vez dá tudo certo, ele salva corretamente, porém quando eu utilizo o realloc as informações se "perdem", ou quando tento altera-las há um "estouro de memória".
int cadastro(produtos *dados, int quantidade_produtos){
system("cls");
int aux;
emoldurar("Cadastro");
printf("Produto: ");
fflush(stdin); gets(dados[quantidade_produtos].nome_produto);
printf("Cod produto: ");
fflush(stdin); scanf("%d", &dados[quantidade_produtos].cod_produto);
for(int i = 0; i <= quantidade_produtos; i++)
{
if(dados[i].cod_produto == dados[quantidade_produtos].cod_produto && i != quantidade_produtos){
printf("Cod em uso. Tente novamente.\nCod produto: ");
scanf("%d", &dados[quantidade_produtos].cod_produto);
i = -1;
}
}
printf("Preco: ");
fflush(stdin); scanf("%f", &dados[quantidade_produtos].preco_produto);
printf("Quantidade: ");
fflush(stdin); scanf("%d", &dados[quantidade_produtos].quantidade);
printf("Produto cadastrado com sucesso!\n", quantidade_produtos);
system("pause");
quantidade_produtos++;
aux = quantidade_produtos + 2;
dados = realloc(dados, aux * sizeof(produtos));
return quantidade_produtos;
}
a função recebe um ponteiro de uma struct e a quantidade_produtos inicialmente é 0.