微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 malloc 中删除单个“块”并使用正确的新内存重新分配新堆栈?

如何解决如何从 malloc 中删除单个“块”并使用正确的新内存重新分配新堆栈?

我有一些要为其存储数据的结构:

typedef struct point
{
    double x,y,z;

} point;

typedef struct vector
{
    double x,z;

} vector;

typedef struct triangle
{
    point *corner;
    double normvec[3];
    int chopped;

} triangle;

我也有:

triangle *trilist;
triangle *triptr;
triangle *tmp;
point *pt1ptr;
point *pt2ptr;
point *pt3ptr;

我想写一个函数,可以删除'i'处的单元。我该怎么做呢?到目前为止,这是我糟糕的尝试......(提示:它绝对行不通!)那么释放它怎么样?


void deletetriangle(struct triangle *triptr,int totaltri,int i)
{
    tmp = (triangle *) realloc(trilist,(totaltri-1)*sizeof(triangle));
    for (int c = i; c < totaltri - 1; c++)
    {
        trilist[c] = trilist[c+1];
        printf("%d %d/n",i,c);
    }

    for(i=0;i<storage;i++)
    {
        triptr=&(trilist[i]);
        free(triptr->corner);
    }

    trilist = tmp;

}

感谢您的帮助!这是我在程序结束时释放原始内存的方式:

    for(i=0;i<storage;i++)
    {
    triptr=&(trilist[i]);
    free(triptr->corner);
    }

    free(trilist);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。