最后free(r)的时候程序会出错,但是编译器不会报错。后来经过网友帮助得知:ln是一个栈变量,可楼主后来free(r)的时候,r正好指向ln。free的参数必须是由malloc返回的。free栈变量是一个undefined behavior,当然,大部分情况下意味着crash。
因为第一个节点La=&ln;是一个站变量,创建大小非通过malloc返回的;所以当free(r)时若指向ln的地址则会出错。所以可以更改函数返回类型 :
这样可以避免free()函数的出错。
最后free(r)的时候程序会出错,但是编译器不会报错。后来经过网友帮助得知:ln是一个栈变量,可楼主后来free(r)的时候,r正好指向ln。free的参数必须是由malloc返回的。free栈变量是一个undefined behavior,当然,大部分情况下意味着crash。
因为第一个节点La=&ln;是一个站变量,创建大小非通过malloc返回的;所以当free(r)时若指向ln的地址则会出错。所以可以更改函数返回类型 :
这样可以避免free()函数的出错。