#include<stdio.h>
#include<stdlib.h>
int main()
{
int *Int; /*定义指针变量、数组及整型变量*/
int Number[2];
int i,j;
Int=(int*)malloc(sizeof(Int)); /*赋予动态内存*/
for(i=0;i<3;i++) /*循环语句输入数字*/
{
Int=Number; /*指针指向变量*/
printf("请输入第%d个数:",i+1);
scanf("%d",Int+i);
}
for(j=0;j<3;j++) /*输出结果*/
{
printf("第%d个数为:%d\n",j+1,Number[j]);
}
free(Int); /*释放空间*/
return 0; /*程序结束*/
}
Int=(int*)malloc(sizeof(Int) * 3);
int Number[2];
->
int Number[3];
你无论动态分配的还是数组,都越界了
Int = Number;
有了这一行
free(Int);
这里就不能调用了。因为Int指向的是数组Number不是malloc的地址,堆栈上数组不能释放。
参考的完整程序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *Int; /*定义指针变量、数组及整型变量*/
int i,j;
Int=(int*)malloc(sizeof(Int) * 3); /*赋予动态内存*/
for(i=0;i<3;i++) /*循环语句输入数字*/
{
printf("请输入第%d个数:",i+1);
scanf("%d",Int+i);
}
for(j=0;j<3;j++) /*输出结果*/
{
printf("第%d个数为:%d\n",j+1,Int[j]);
}
free(Int); /*释放空间*/
return 0; /*程序结束*/
}
采纳