#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; /*程序结束*/
}
C语言 在使用free函数释放空间时,为什么会出现debug assertion failed?是内存分配问题还是指针设置问题呀?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2020-02-22 14:21关注
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; /*程序结束*/ }
问题解决的话,请点
采纳
解决 无用评论 打赏 举报
悬赏问题
- ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号