关于realloc的求助
为什么输出的是10 -1 80,不应该是10 80 80吗? 本帖最后由 baige 于 2020-8-5 17:52 编辑敲错了,尴尬 大哥咱能发文本代码吗..不然我不方便调试的 本帖最后由 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;
} 我这里就是10 80 80 呀 qiuyouzhi 发表于 2020-8-5 17:51
我这里就是10 80 80 呀
我修改了上面多了一个1,你重新试一下
14行a = _msize(p); baige 发表于 2020-8-5 17:52
我修改了上面多了一个1,你重新试一下
14行a = _msize(p);
噢,确实
我这里直接不运行了 本帖最后由 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 baige 发表于 2020-8-5 18:05
这样才输出10 -1 80
运行还是10 -1 80{:5_96:}
编译器的事吗? 晓觉懿 发表于 2020-8-5 18:07
运行还是10 -1 80
编译器的事吗?
搞蒙的,被dev,刚才显示不出,现在又可以了, p应该被释放了, 在p1 = (int*)realloc(p, 80);时,p 指向的内存块不够大,因此重新申请了一块内存赋给 p1,原来 p 指向的内存块就被释放了。此时a = _msize(p);就会得到 -1 了。
页:
[1]