Closed GuilhermePascon closed 3 years ago
Tente substituir lista = realloc(lista, (current_size * sizeof(int)));
por lista = (int*) realloc(lista, current_size * sizeof(int));
Nao deu certo, professor, obtive o mesmo resultado, tentei colocar o (int *)
em calloc tambem e do mesmo jeito nao funcionou.
Isto realmente era para funcionar. Veja o seguinte código abaixo (e o output gerado). O único problema do realloc
é que não inicializa o vetor com zeros e, portanto, lixo de memória foi impresso.
Sem o GDB, qual erro o compilador está gerando?
Não lembro exatamente o erro mas era algo com código de erro de malloc, mas realmente, verifiquei o código de novo e funcionou, acho que o problema deve ser com o GDB, curioso. Muitíssimo obrigado professor e desculpe o incômodo ao Domingo.
Bem curioso mesmo o GDB informar um erro, sendo que a execução normal do programa funciona perfeitamente. Pode ser conflito entre as versões do GDB, do compilador e do C instalado no computador. Mas, vai saber realmente o que acontece...
Update sobre o que pode ter acontecido. Eu estava usando comando "s" do gdb para quando chegar em uma linha de codigo que chama uma funcao, eu entrar nessa funcao para poder ver o que esta acontecendo. No entanto quando cheguei na linha que chamava "realloc" eu continuei usando o comando "s" em vez de mudar para o "n" (que nao entra na funcao, apenas a executa) e isso deve ter causado algum problema ou deve ter dado alguma informacao que eu nao soube interpretar.
Olá, estou inicializando meu vetor que guardará as informações como:
int *lista = NULL
depois alocando a memoria inicial de tamanho 5 assim (current_size é igual a 5):
lista = calloc(current_size, sizeof(int));
e logo na segunda linha do primeiro teste ("0 194 9") onde eu preciso dobrar o tamanho do array, eu faço da seguinte forma:
while (Y > current_size) { current_size = 2 * current_size; lista = realloc(lista, (current_size * sizeof(int))); }
no entanto olhando no gdb, ao executar a linha
lista = realloc(lista, (current_size * sizeof(int)));
eu recebo o seguinte erro:
não sei dizer em que parte do código eu errei, alguém pode me ajudar?