什么导致小弟我free报错

什么导致我free报错?
typedef   struct   file_tnode
{
file_t   *file;
int   fd;//文件标识符
int   count;//文件用户数
struct   file_tnode   *next;
}gfile_tnode;
typedef   gfile_tnode   *pgfile_tnode;

加了这三句话(fspgfile_tnode是pgfile_tnode类型,file是一个结构体指针)
fspgfile_tnode-> file   =   file;
fspgfile_tnode-> fd   =   fd;
fspgfile_tnode-> count   =   1;
这样赋值后结构体
free(file);
file   ==   NULL;
free(fspgfile_tnode);
fspgfile_tnode   ==   NULL;
出错
linux下gcc调试出现问题提示(corrupted   double-linked   list)
我基本可以确定是在那三句话位置出错。就是不知道怎么回事??
谢谢大家帮我看看




------解决方案--------------------
还有
file == NULL;
fspgfile_tnode == NULL;
你这是赋值还是是什么判断的意思???
------解决方案--------------------
用malloc申请空间了吗?
------解决方案--------------------
要看你怎么创建的对象阿,如果你用file_t* p = new file_t;的话,用free当然有问题了。
------解决方案--------------------
指针指向的空间是否存在,是否为已经释放的空间