标题:还是 malloc 和 free 的问题
只看楼主
schoolbug
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-5-1
 问题点数:0 回复次数:3 
还是 malloc 和 free 的问题
我在程序的一段中用了一个do{}while();
在do 中定义了一些数组
 do
    {  
        int k = 0;
        int temp_gain_k = 0;
        gain_k = 0;

        int p1 = 0;
        int p2 = 0;
                
        int *g_of_gain_k;
        g_of_gain_k = (int *)malloc(s*sizeof(int));   
                  for(int gogk=0; gogk<s; gogk++)
        {
            g_of_gain_k[gogk] = 0;
        }
                    
                                                            
        int  *mark_v1;                                
                  mark_v1 = (int *)malloc(s*sizeof(int));   
                  for(int mv1=0; mv1<s; mv1++)
        {
            mark_v1[mv1] = 0;
        }

        int  *mark_v2;   
                   mark_v2 = (int *)malloc((N-s)*sizeof(int));
        for(int mv2=0; mv2<(N-s); mv2++)
        {
            mark_v2[mv2] = 0;
        }


        int  *p_order_1;   
                   p_order_1 = (int *)malloc((s+2)*sizeof(int));
        for(int porder=0; porder<(s+2); porder++)
        {
            p_order_1[porder] = 0;
        }

        int  *p_order_2;   
                   p_order_2 = (int *)malloc((N-s+2)*sizeof(int));
        for(porder=0; porder<(N-s+2); porder++)
        {
            p_order_2[porder] = 0;
        }

                  一系列的运算得出gain_k及其他

                   free(p_order_2);
        free(p_order_1);
        free(mark_v1);
        printf("here   1111111111111111\n");
        free(mark_v2);
        printf("here   2222222222222222\n");
        free(g_of_gain_k);
        printf("here   33333333333333333\n");

        /*.............*/
    }  while(gain_k > 0);

调试的时候,只能
显示  here 1111111111111111111

然后系统跳出对话框“应用程序异常”
而把     free(mark_v2);
    free(g_of_gain_k);
    注释掉之后,就正常了。而且结果也对。

free(mark_v2);和    free(g_of_gain_k);有任何一个没被注释掉,就会出错。


我确定在do{}while();之外,没有用到mark_v2【】 和g_of_gain_k【】

这是怎么回事,请指教。
搜索更多相关主题的帖子: free malloc 
2008-05-09 19:22
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
调试看看mark_v2是否空指针?

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-09 19:26
schoolbug
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-5-1
得分:0 
回复 2# 的帖子
不为空
2008-05-09 19:35
schoolbug
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-5-1
得分:0 
刚在do的结尾(没有free的情况下,因为free会报错),printf了mark_v2和g_og_gain_k
分别是:00432BA0  和  00431060
2008-05-09 19:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-213415-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.346675 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved