C语言free报错

来源:互联网 发布:怎样化妆 知乎 编辑:程序博客网 时间:2024/06/05 09:16

长话段说:最近写算法,matlab转C,然后在C中申请了一个空间,用来存放数据如下:

double *J1 = (double*)calloc(180 / step, sizeof(double));

然后接下来开始对J1进行赋值
int k=0;for(int m=1;m<=180;m+=step){    k+=1;    J1[k]=......}
但是当我free的时候,开始报错,楼主很惊讶,为啥呀,我规规矩矩申请,那我规规矩矩释放就不行了?然后搜到一篇博客:大神博客地址,里面讲解了为什么会报错。其实在我们申请空间的时候,程序会保留我们申请空间的一些信息比如空间大小,当我们free的时候,会调用这些信息。不过如果我们改动了信息,free的时候就会失败。

那么很明显,我这是改了信息了,哪改了呢,如果看程序就会发现,其实我的J1已经越界了,因为我的k+=1写的地方写错了,所以这就相当于改动了我们之前所申请的信息,造成free失败,如果把k+=1放在J1[k]之后,就不会发生这个问题,free就会成功。这里当作一个教训吧,写C的时候切记不要数组越界,内存管理好麻烦。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子调皮又被老师留校了怎么办 孩子拼音f和sh发音不清怎么办 自己在家生的孩子怎么办出生证明 在家念地藏经招来众生不走怎么办 家是济宁孩子上学想在济南上怎么办 高一孩子成绩严重下滑家长怎么办 商铺租客不交租金又不搬走怎么办 考试试卷找不到了明天要交怎么办 8个月宝宝不爱吃蔬菜泥怎么办 5个月的宝宝拉肚怎么办 一岁宝宝大便拉不出来怎么办 八个月宝宝便秘拉不出来怎么办 10个月宝宝大便拉水怎么办 4个月的孩子大便拉水怎么办 五个多月宝宝大便拉水怎么办 七个月宝宝大便还没成行怎么办 宝宝一岁了还没长牙怎么办 宝宝什么都会就差不会独占怎么办 两岁宝宝肚子不舒服还吐怎么办 两岁宝宝吃坏肚子吐怎么办 1岁半儿童牙烂了怎么办 一岁宝宝吃了就吐怎么办 两岁宝宝龋齿门牙掉了怎么办 一岁宝宝冻着了呕吐怎么办 两岁宝宝喉咙有痰呼呼响怎么办 1岁宝宝吐的水水怎么办 宝宝吐了5 6次了怎么办 7岁儿童吃了就吐怎么办 狗狗拉稀呕吐不吃饭只喝水怎么办 宝宝吃坏肚子上吐下泄怎么办 一岁宝宝又吐又拉怎么办 八个月宝宝吃什么吐什么怎么办 九个月宝宝吃什么吐什么怎么办 三岁宝宝吃什么吐什么怎么办 2岁宝宝又拉又吐怎么办 6岁儿子又吐又拉怎么办 2岁宝宝吃了就吐怎么办 宝宝吃饱了就吐吐了在吃怎么办 3岁宝宝吃了就吐怎么办 6岁儿童又吐又拉怎么办 还没满月的宝宝肚子胀气怎么办