为什么用VC++6.0执行时释放两个内存空间会报错?
本帖最后由 四十不环 于 2018-9-1 23:59 编辑为什么用VC++6.0执行时释放两个内存空间会报错?
#include<stdio.h>
#include <stdlib.h>
int main()
{
double *fDouble; /*定义实型指针*/
int* iInt; /*定义整型指针*/
fDouble=(double*)malloc(sizeof(double));/*使用malloc为分配实型空间*/
printf("%d\n",sizeof(*fDouble)); /*输出空间的大小*/
iInt=realloc(fDouble,sizeof(int)); /*使用realloc改变分配空间大小*/
printf("%d\n",sizeof(*iInt));
free(fDouble);
free(iInt);
return 0;
}
如果删除掉两个free()语句又能正常执?
请问各位前辈这是怎么回事呢?
{:10_245:}
你怎么把数据类型给换了?
iInt = (int*)malloc(sizeof(int));
你这样申请内存等于没有申请,malloc(n * sizeof(int)); 需要几个就用 n 注明。不过你要这样操作也可以问题是 iInt = realloc(fDouble, sizeof(int)) 时,iInt 与 fDouble 都是指向同一个申请空间的,所以只需要释放其中一个。系统在抱怨说:”不是刚刚才释放吗?“
页:
[1]