Динамическая память в C(Си)
не так давно начал изучать язык "С". Возник вопрос, почему на 1 скрине при вводе большого числа, пропускается код с проверкой на отклонение выделения памяти + выкидывает с программы? Ввел число чуть меньше, теперь он показал содержание, но не показал псевдослучайные числа в массиве.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand(time(NULL));
int allarr;
int *arr = (int *)malloc(allarr*sizeof(int));
printf("Enter array size: %");
scanf("%d", &allarr);
if(arr == NULL) {
printf("Memory decline");
return -1;
}
for(int i = 0; i < allarr; i++) {
arr[i] = rand() % 98 + 1;
}
printf("array = ");
for(int i = 0; i < allarr; i++) {
printf(" %d ", arr[i]);
}
printf("\nNechet = ");
for(int i = 0; i < allarr; i++) {
if (arr[i] % 2 == 1) {
printf(" %d ",arr[i]);
}
}
printf("\n");
return 0;
}
Изначально я подумал, что проблема как раз таки в раннем объявлении переменной. ( КОД 2 ) Только теперь при большом числе - из программы не выкидывает, а наоборот начинает грузить память, в конце концов все содержимое массива передается в консоль.
int main(void) {
srand(time(NULL));
int allarr;
int *arr;
printf("Enter array size: %");
scanf("%d", &allarr);
arr = (int *)malloc(allarr*sizeof(int));
if(arr == NULL) {
printf("Memory decline");
return -1;
}
for(int i = 0; i < allarr; i++) {
arr[i] = rand() % 98 + 1;
}
printf("array = ");
for(int i = 0; i < allarr; i++) {
printf(" %d ", arr[i]);
}
printf("\nNechet = ");
for(int i = 0; i < allarr; i++) {
if (arr[i] % 2 == 1) {
printf(" %d ",arr[i]);
}
}
printf("\n");
return 0;
}

