c语言free释放内存错误,为什么这段程序在加上free释放内存后会提示出错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

int main()

{

int m = 0,n = 0;

printf("请输入数组长度:");

scanf("%d",&m);

int* q = (int*)malloc(n*sizeof(int));

if(q==NULL)

{printf("内存分配失败!");

return 0;

}

for(;n

{

q[n]=1+n;

}

for(n=0;n

{

printf("%d ",q[n]);

}

printf("\n");

free(q);

q = NULL;

return 0;

}

请输入数组长度:7

1 2 3 4 5 6 7

*** Error in `./a.out': free(): invalid next size (fast): 0x0000000000e4c010 ***

a.out: malloc.c:2369: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.

已放弃 (核心已转储)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值