函数传入的参数为指针类型,函数内部也另外开辟了空间,使得它的头指针等于传入的,但是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。使用栈空间