函数传入的参数为指针类型,函数内部也另外开辟了空间,使得它的头指针等于传入的,但是free时,段错误。这是不对的。
如错误如下:
fr412012.0910
short* pinx=(short*) malloc(pinNum*sizeof(short));
short* piny=(short*) malloc(pinNum*sizeof(short));
int i,j,k;
pinx=nets[jj]->pinX;
piny=nets[jj]->pinY;
free(pinx);
free(piny);
正确如下
(1)
xs = (DTYPE *)malloc(sizeof(DTYPE)*(d));
ys = (DTYPE *)malloc(sizeof(DTYPE)*(d));
s = (int *)malloc(sizeof(int)*(d));
for(i=0; i<d; i++)
{
xs[i] = gxs[netID][i];
ys[i] = gys[netID][i];
s[i] = gs[netID][i];
}
free(ys);
free(ys);
free(s);
}
(2)
#define MAXNETDEG 1000000000
int x[MAXNETDEG], y[MAXNETDEG];
不用free。使用栈空间