#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int *ptr;
int max;
int i=0,number=0;
printf("Enter the size of array \n");
if(scanf("%i",&max) != 1)
{
printf("number not enterd correctly\n");
exit(EXIT_FAILURE);
}
ptr=(int *)malloc(max * sizeof(int));
if(ptr=NULL)
{
puts("Error in recieving memory");
exit(EXIT_FAILURE);
}
else
{
puts("Enter array");
while(i<max && scanf("%d",&ptr[i]) == 1)
++i;
/* number=i;
puts("Array entered is ");
for(i=0;i<number;i++)
printf("%i %i\n",i,ptr[i]);
*/
}
puts("Done!");
free(ptr);
return 0;
}
Программа успешно компилируется без каких-либо ошибок. При запуске программы и после ввода первого значения в массиве программа завершается с ошибкой сегментации. Я использую gcc-компилятор на ubuntu 12.04, работающий на vmware.Почему следующий код вызывает ошибку сегментации?
oops спасибо, что указали это. –
Как побочный эффект 'free (ptr);' не освобождает память, так как вы потеряли указатель. –
В этом случае, что будет бесплатным (ptr); так как теперь он указывает на null? –