晓觉懿 发表于 2020-8-5 17:38:05

关于realloc的求助

为什么输出的是10 -1 80,不应该是10 80 80吗?

baige 发表于 2020-8-5 17:46:29

本帖最后由 baige 于 2020-8-5 17:52 编辑

敲错了,尴尬

qiuyouzhi 发表于 2020-8-5 17:48:53

大哥咱能发文本代码吗..不然我不方便调试的

baige 发表于 2020-8-5 17:50:13

本帖最后由 baige 于 2020-8-5 17:51 编辑

qiuyouzhi 发表于 2020-8-5 17:48
大哥咱能发文本代码吗..不然我不方便调试的

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int main()
{
        int *p;
        p = (int *)malloc(10);
        inta = _msize(p);
        printf("%d\n",a);
       
        int *p1;
        p1 = (int *)realloc(p,80);
        a = _msize(p);
        printf("%d\n",a);
        int b = _msize(p1);
        printf("%d",b);
        system("pause");
        return 0;
}

qiuyouzhi 发表于 2020-8-5 17:51:53

我这里就是10 80 80 呀

baige 发表于 2020-8-5 17:52:37

qiuyouzhi 发表于 2020-8-5 17:51
我这里就是10 80 80 呀

我修改了上面多了一个1,你重新试一下
14行a = _msize(p);

qiuyouzhi 发表于 2020-8-5 17:54:06

baige 发表于 2020-8-5 17:52
我修改了上面多了一个1,你重新试一下
14行a = _msize(p);

噢,确实
我这里直接不运行了

baige 发表于 2020-8-5 18:05:18

本帖最后由 baige 于 2020-8-5 18:07 编辑

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int main()
{
        int *p;
        p = (int *)malloc(10);
        inta = _msize(p);
        printf("%d\n",a);
        int *p1 = NULL;
        p1 = (int *)realloc(p,80);
        a = _msize(p);
        printf("%d\n",a);
        int b = _msize(p1);
        printf("%d\n",b);
        system("pause");
        return 0;
}
这样才输出10 -1 80

晓觉懿 发表于 2020-8-5 18:07:40

baige 发表于 2020-8-5 18:05
这样才输出10 -1 80

运行还是10 -1 80{:5_96:}
编译器的事吗?

baige 发表于 2020-8-5 18:10:10

晓觉懿 发表于 2020-8-5 18:07
运行还是10 -1 80
编译器的事吗?

搞蒙的,被dev,刚才显示不出,现在又可以了,

baige 发表于 2020-8-5 18:14:01

p应该被释放了,

永恒的蓝色梦想 发表于 2020-8-5 18:33:12

在p1 = (int*)realloc(p, 80);时,p 指向的内存块不够大,因此重新申请了一块内存赋给 p1,原来 p 指向的内存块就被释放了。此时a = _msize(p);就会得到 -1 了。
页: [1]
查看完整版本: 关于realloc的求助