Ошибка при очистке памяти в динамическом массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

вот имеется такой код. программа, которая вставляет массив в массив. всё работает правильно, но в конце выскакивает ошибка. при этом если убрать строчку free(a); то ошибки не возникает. я вот не понимаю, получается надо очистить память только для массива b? но что тогда с массивом а?
Листинг программы
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. void generate(int na, int **a)
  7. {
  8. int i, *pa;
  9. *a=(int *)malloc(na*sizeof(int));
  10. pa=*a;
  11. for (i=0; i<na; i++)
  12. *(pa+i)=rand()%abs(20)-10;
  13. }
  14. void show(int na, int *a)
  15. {
  16. int i;
  17. for (i=0; i<na; i++)
  18. printf ("%d ", *(a+i));
  19. printf("\n");
  20. }
  21. //------------------------------------------------------
  22. void insertArray(int *a, int nb, int na, int m, int *b)
  23. {
  24. int i, j, k;
  25. a=(int *)realloc(a, (na+nb)*sizeof(int));
  26. for(k=0; k<nb; k++)
  27. for (i=na+nb-2; i>=m-1+k; i--)
  28. *(a+i+1)=*(a+i);
  29. for (i=0; i<nb; i++)
  30. *(a+i+m-1)=*(b+i);
  31. for (i=0; i<na+nb; i++)
  32. printf ("%d ", *(a+i));
  33. }
  34. int main (void)
  35. {
  36. srand (time(NULL));
  37. int *a=NULL;
  38. int *b=NULL;
  39. int na, nb, ch, m;
  40. scanf ("%d", &na);//для массива а
  41. scanf ("%d", &nb);//для массива b
  42. scanf ("%d", &m);//вставляем в m место
  43. generate(na, &a);
  44. generate(nb, &b);
  45. show(na, a);
  46. show(nb, b);
  47. insertArray(a, nb, na, m, b);
  48. free(a);
  49. free(b);
  50. getch();
  51. return 0;
  52. }

Решение задачи: «Ошибка при очистке памяти в динамическом массиве»

textual
Листинг программы
  1. adr a before insertArray 0xe2d010
  2.  
  3. adr a in insertArray 0xe2d0a0
  4. -10 -1 -5 2 -3 -10 -2 -3 5 -3 1 -8 2 7 -4 -9 -2 8 7 -1 7 -1 -4 0 1 4 6
  5. adr a after insertArray 0xe2d010

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы