Pesquisar na Comunidade
Mostrando resultados para as tags ''realloc''.
Encontrado 1 registro
-
Boa tarde, pessoal! Já li diversas coisas a respeito de Alocação Dinâmica com realloc e mesmo assim não consigo entender o porque meu código não estar dando certo. O meu objetivo fazer uma alocação dinâmica de um vetor com a relloc. Eu aloquei ele no inicio do código e a medida que preciso de mais espaço usei um laço (FOR) para ir alocando cada bloco. O programa é o seguinte: "Leia um número positivo do usuário, então, calcule e imprima a sequencia de Fibonacci até o primeiro número superior lido. Exemplo: se o usuário informou o número 30, a sequência a ser impressa será 0 0 1 2 3 4 8 13 21 34. O meu código funciona com números menores. Por exemplo, quando digito "10", ele vai até o 13. Tudo Ok. MacBook-Pro-de-Renan:Lista_3 renan$ ./PD_L_3_44.out Digite o n: 10 0, 1, 1,2,3,5,8,13, Mas quando digito "30", ele quebra com a seguinte mensagem: MacBook-Pro-de-Renan:Lista_3 renan$ ./PD_L_3_44.out Digite o n: 30 0, 1, PD_L_3_44.out(2696,0x7fff782be000) malloc: *** error for object 0x7fbada401390: pointer being realloc'd was not allocated *** set a breakpoint in malloc_error_break to debug 1,2,3,5,8,13,21,Abort trap: 6 Alguém consegue me ajudar o porque dá esse problema? #include <stdio.h> #include <stdlib.h> int main () { int *temp, n; int *v = malloc(2 * sizeof(int)); v[0] = 0; v[1] = 1; printf("Digite o n: "); scanf("%d", &n); printf("%d, %d,", v[0], v[1]); for(int i = 2; i > 1; i++){ temp = realloc(v, (i+1) * sizeof(int)); if( temp != NULL){ v[i] = (v[i-1] + v[i-2]); printf("%d,", v[i]); if(v[i] >= n){ i = 0; } } else { printf("Erro na Alocação da Memória\n"); return 1; } } free(v); printf("\n"); return 0; } Muito obrigado!!