Я думаю, в вашей программе есть несколько fl aws.
Вот версия без утечек памяти:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 6
int *boh(int *arr, int n) {
int *a;
int i;
int b;
b = arr[SIZE - 2];
a = (int *) realloc(arr, (n + SIZE) * sizeof(int));
for (i = SIZE - 1; i < (n + SIZE); i++) {
b += b;
a[i] = b;
}
return a;
}
int main() {
int a, i, n;
int *arr;
int *b;
arr = (int *) calloc(SIZE, sizeof(int));
for (i = 0; i < SIZE; i++) {
printf("Give me a number: \n");
scanf("%d", &a);
if (i != SIZE - 1) {
arr[i] = a;
} else {
n = a;
}
}
b = boh(arr, n);
for (i = 0; i < (n + SIZE); i++) {
printf("%d\n", b[i]);
}
free(b);
return 0;
}
Вы должны поставить free
на указатели, которые вы создали с помощью a malloc
или аналогичные функции.
Проблема, которую я обнаружил, заключается в том, что вы использовали realloc
без передачи фактического размера массива.
Использование sizeof(arr)
не сработает, вы должны передать его как параметр функции.