我已经这个结构定义:函数指针赋值,为什么通过指针调用这个函数会导致seg错误?
typedef struct Socket_s
{
...
SocketConnectFunc Connect;
...
}Socket;
其中SocketConnectFunc定义为:
typedef Socket_Return (*SocketConnectFunc) (void * self);
当初始化一个Socket结构,我把这种:
void Init(Socket * sock)
{
sock = (Socket *)malloc(sizof(Socket));
if(sock)
sock->Connect = SocketConnect;
}
但是,当我试图拨打sock->Connect()
我得到分段错误,甚至没有输入该功能。我分配sock->Connect
的方式有问题吗?
注意: Socket_Return是一个枚举(typedef enum {SUCCESS,FAIL} Socket_Return
)
我认为它是因为初始化原型必须是'无效初始化(插座**袜子) '。否则'sock'指针就不会被修改,因为它是通过值传递的。 – BeeBand 2011-06-05 15:51:51