Подскажите, пожалуйста, что я сделал не так?
#include <stdio.h>
#include <stdlib.h>
void read(int *p,int n)
{
int *q,i,j;
q=p;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("matrix[%d][%d]=",i,j);
scanf("%d",q);
q=q+1;
}
printf("\n");
}
void alocate(int *p,int n)
{
p=(int*)malloc(n*n*sizeof(int));
if(p==NULL)
{
printf("Allocation error\n");
exit(1);
}
}
void realocate(int *p,int n)
{
p=(int*)realloc(p,n*n*sizeof(int));
if(p==NULL)
{
printf("Reallocation error\n");
exit(1);
}
}
void show(int *p,int n)
{
int *q,i,j;
q=p;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",*q);
q=q+1;
}
printf("\n");
}
}
void cleaner(int *p)
{
free(p);
}
int main() {
int *p,n;
p=NULL;
printf("n=");
scanf("%d",&n);
alocate(p,n);
read(p,n);
show(p,n);
realocate(p,2);
read(p,2);
show(p,2);
cleaner(p);
return 0;
system("pause");
}
NetBeans (MinGW):
RUN FAILED (значение выхода 5)
Полученный сигнал: SIGSEGV(?) с sigcode?(?) Из процесса:?Для программы cppapplication_1 pid -1
Visual Studio:
Необработанное исключение в 0x5c81e42e (msvcr100d.dll) в Capp.exe: 0xC0000005: место записи нарушения прав доступа 0x00000000.
А если я удалю p = NULL;из основной функции он говорит:
Ошибка проверки времени выполнения # 3 - переменная 'p' используется без инициализации.Необработанное исключение в 0x5b4ee42e (msvcr100d.dll) в Capp.exe: 0xC0000005: Место записи нарушения прав доступа 0xcccccccc.