malloc 的bug操作

    if(p != NULL) {
        setX = p->data[0];
        setY = p->data[1];
        for(i = 0; i < p->len - 2; i++)  { 
            if((setY > 16) || (setX > 8)){
                return;
            }
            show(setX ,setY++ ,p->data[2 + i]);
        }
    } 
    free(p);
没有在return前释放;

free后没置空;

推荐使用calloc 和malloc 的区别,

{ p = malloc(sizeof(int) * n);  memset(p ,0 ,sizeof(int) * n); }           ==  {calloc(sizeof(int) * n); }

 

你可能感兴趣的:(malloc 的bug操作)