C语言编程时使用MALLOC后一直没有用FREE函数释放内存空间怎么办

而且之後就运行不了了,即使加上free!啊啊啊……我之前大意地忘记free了发现后,修改了,加上free和null还是会出现Thismaybeduetoacorrupti... 而且之後就运行不了了,即使加上free!啊啊啊……
我之前大意地忘记free了
发现后,修改了,加上free和null 还是会出现
This may be due to a corruption of the heap, which indicates a bug in assign
我再做修改後还是会在debug的时候卡掉,不知道是为什麽,网上查了下,可能因为野指针?
我的主程序:
int main(){
int i;
struct card Card[80];
struct card *pcard;
pcard = (struct card *)malloc( sizeof(struct card));
if (pcard == NULL){
exit(0);
}
pcard = Card;
。。。

free(pcard);
pcard=NULL;
return 0;
}
好担心是不是电脑坏了。。。之前没有free和设置成null是不是无法挽回了??
希望能帮助解答此问题,谢谢!
展开
 我来答
tattackor
推荐于2017-09-10 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:884万
展开全部
如果不适用free释放内存,会造成内存泄露。随着程序的运行,程序所占内存越来越多,知道系统奔溃或者程序结束。
1、free函数:
原型:void free(void *ptr);
功能:释放malloc(或calloc、realloc)函数给指针变量分配的动态内存;
头文件:malloc.h或stdlib.h
2、为了避免释放已经释放了内存的指针内存,或没有释放内存,在C语言中最好是在定义指针时赋初值NULL,释放后立即赋NULL,释放时检查指针值再决定释放就避免释放错误了,例如:
int *a = NULL
int *b = (int*) malloc(sizeof(int) * 10);
a= b;
/* 执行大量操作后 */
if(a != NULL) {free(a);a=NULL;}
if(b != NULL) {free(b);b=NULL;}
杨小丢Summer
2013-05-01
知道答主
回答量:3
采纳率:0%
帮助的人:4438
展开全部
你这里程序有问题:
struct card Card[80];struct card *pcard;
这里Card[80]是数组,已经自动分配空间了;
如果需要指针pcard指向这个空间,直接pcard = Card;就可以了,
不用再pcard = (struct card *)malloc( sizeof(struct card));if (pcard == NULL){exit(0);}分配空间了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友31c5511
2013-05-02
知道答主
回答量:9
采纳率:0%
帮助的人:3.8万
展开全部
正如 杨小丢Summer 所说 你已经改变了指针的指向 再想free原来申请的空间已经不可能了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巴黎是小沫
2013-05-01 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:54.9万
展开全部
程序结束的时候操作系统会帮你把申请的存储空间free了的....你贴一下问题吧,可能问题不是你说的地方吧我想
更多追问追答
追问
补充了555求帮助谢谢!
追答
pcard = Card那句话有问题..你pcard指向card之前malloc的空间就相当于丢失了,无法再释放了。然后你pcard指向card后(我记得有的编译器你这句话都会报错),试图释放pcard就是试图释放card这个局部变量,所以就出错了。建议删去malloc和free那两句话:
int main(){
int i;
struct card Card[80];
struct card *pcard;

pcard = Card;
。。。

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式