如何解决如何从 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 举报,一经查实,本站将立刻删除。