free()报错

本文介绍了C语言中动态内存分配时的一个常见问题,即在使用malloc分配内存后,若指针被改变,直接使用free释放内存会导致错误。作者通过示例代码展示了错误的使用方式,并提供了改正后的代码,强调了当函数返回指针时,应在主函数中直接定义指针接收返回值以避免此类错误。
摘要由CSDN通过智能技术生成

free() 出错
本人是新手,大佬勿喷!! 第一次写 !!
使用 malloc 申请的地址 中途改变指针 再用 free()  释放空间时 就会报错
以下是错误代码

int main()
{
    int a[] = { 1,9,9 };
    int sz = sizeof(a) / sizeof(a[0]);
    int* arr = (int*)malloc(sizeof(int) * sz);
    assert(arr);
    int returnSize = 0;
    //plusOne函数返回一个指针
    arr = plusOne(a, sz, &returnSize);
    printf("%p\n", arr);
    int i = 0;
    for (i = 0; i < returnSize; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("%p\n", arr);
    free(arr);
    arr = NULL;
    return 0;
}

报错信息


 

改正后的代码

int main()
{
    int a[] = {1,9,9};
    int sz = sizeof(a) / sizeof(a[0]);
    int returnSize = 0;
    int* arr = plusOne(a, sz, &returnSize);
    printf("%p\n", arr);
    int i = 0;
    for (i = 0; i < returnSize; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    printf("%p\n", arr);
    return 0;
}


当函数返回指针时 在主函数中 应直接定义指针变脸 去接收 返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当安装JDK后,如果在打开FreeMind出现报错,可能是由于Java运行环境的问题导致的。 FreeMind运行需要Java Runtime Environment(JRE),所以安装JDK并不会解决这个问题。首先,你需要确保已经正确安装了JRE。如果你之前安装过JDK,但是依然报错,可能是因为注册表存在问题,可以尝试重新安装JRE来解决。 另外,如果报错信息是"the Registry refers to a nonexistent java runtime environment installation",有两种解决办法可以尝试。第一种是直接卸载JDK,并在注册表中删除相关项,然后重新下载并安装JDK。在相同的路径下,检查是否存在"JavaSoft"这个项。如果存在,重新运行FreeMind应该就没有问题了。第二种方法是不卸载JDK,而是更改JDK的路径。这样可以解决FreeMind点击没有反应的问题。 总结起来,如果在安装JDK后,FreeMind出现报错,可以尝试以下解决办法: 1. 确保正确安装了JRE,因为FreeMind需要JRE才能正常运行。 2. 检查注册表,如果出现"the Registry refers to a nonexistent java runtime environment installation"的报错信息,可以尝试先卸载JDK,并删除相关注册表项,然后重新安装JDK。 3. 如果不想卸载JDK,可以尝试更改JDK的路径来解决FreeMind点击无反应的问题。 希望以上解决办法能帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [freemind问题合集](https://blog.csdn.net/weixin_43490695/article/details/120704727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [解决 FreeMind 报错 This application requires a Java Runtime Environment 1.5.0](https://blog.csdn.net/qq_39220334/article/details/122362257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值