groundchor 2020-02-22 14:18 采纳率: 0%
浏览 633

C语言 在使用free函数释放空间时,为什么会出现debug assertion failed?是内存分配问题还是指针设置问题呀?

#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;                                              /*程序结束*/
}
  • 写回答

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 支付宝网页转账系统不识别账号