Enviado em 24/08/2013 - 19:24h
Eu estou começando a mexer com ponteiros e alocação dinâmica, o exercício que estou fazendo é alocar 2 vetores dinâmicamente, multiplicá-los e retornar o resultado, o fato é o programa funciona quando os vetores são de até 5 casas depois ele dá o erro:
1: malloc.c:2369: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
#include <stdio.h>
#include <stdlib.h>
void mult(int *p,int *p2, int *t)
{
int *p3,c;
p3=malloc(*t*sizeof(int));
for(c=0;c<(*t);c++)
{
p3[c+1]=p[c+1]*p2[c+1];
}
for(c=0;c<(*t);c++)
{
printf("\n%d * %d = %d",p[c+1],p2[c+1],p3[c+1]);
}
free(p3);
}
void main()
{
int tam1,c,*pv1,*pv2;
printf("\nDigite o tamanho dos vetores: ");
scanf("%d",&tam1);
pv1=malloc(tam1*sizeof(int));
pv2=malloc(tam1*sizeof(int));
for(c=0;c<tam1;c++)
{
printf("Digite o %d numero do vetor 1: ",c+1);
scanf("%d",&pv1[c+1]);
printf("Digite o %d numero do vetor 2: ",c+1);
scanf("%d",&pv2[c+1]);
}
mult(pv1,pv2,&tam1);
free(pv1);
free(pv2);
}