首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >realloc返回null

realloc返回null
EN

Stack Overflow用户
提问于 2012-09-04 18:03:30
回答 2查看 1.1K关注 0票数 1

我有一个简单的程序,用于学习目的,但当我从已分配的数组重新分配空间时,我总是得到null返回。

代码语言:javascript
复制
#include <stdio.h>

#include <stdlib.h>


void main() 
{
    char *ptr, *retval;

    ptr = (char *)calloc(10, sizeof(char));

    if (ptr == NULL)
        printf("calloc failed\n");
    else
        printf("calloc successful\n");

    retval = (char *)realloc(ptr, 5);

    if (retval == NULL)
        printf("realloc failed\n");    
    else
        printf("realloc successful\n");

    free(ptr);
    free(retval);

}

我不能重新定位,retval = (char *)realloc(ptr, 5);,我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-04 18:06:08

它对我来说就像预期的那样工作:

代码语言:javascript
复制
calloc successful
realloc successful
*** glibc detected *** double free or corruption

假设双重释放是故意的,代码看起来很好。不要调用free(ptr),因为您已经通过重新分配它释放了它。

票数 3
EN

Stack Overflow用户

发布于 2012-09-04 18:10:38

当我编译它时,这对我来说是有效的。你有一个bug,那就是当ptr指向的内存不再有效时,你会调用"free(ptr)“,因为你重新分配了它。它可能与retval相同,但在这种情况下,您需要将其释放两次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12261110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档