求问一个VC6.0环境下释放内存问题
VC6.0环境下,编写一段代码如下
#include "stdio.h"
void *input_data(int *num)
{
int n,i,j,tmp;
int *p;
scanf("%d",&n);
p = malloc(n*n);
for(i=0; i<n;i++)
{
for(j= 0; j<n; j++)
{
scanf("%d",&tmp);
*(p+i*n+j) = tmp;
}
}
*num = n;
return p;
}
void print_data(int num, int *p)
{
int i,j;
for(i= 0; i<num;i++)
{
for(j=0;j<num;j++)
{
printf("%d ",*(p+i*num+j));
}
printf("\n");
}
}
void main()
{
int *p =NULL,*q = NULL;
int num = 0;
int i,j;
p = input_data(&num);
if(p!=NULL)
print_data(num, p);
if(p!=NULL)
free(p); //这一步释放内存有问题
}
free(p); 释放内存时,提示
“debug error!
Program:D:\debug\s.exe
DAMAGE:after Normal block(#43) at 0x003707B8
”
不知怎么回事?