这个段错误,是什么原因?
typedef struct ringlink_operations
{
	void *(*ringlink_malloc)(unsigned int size);
	void (*ringlink_free)(void *dest);
	void (*ringlink_memset)(void *dest, int value, unsigned int size);
	void (*ringlink_memcpy)(void *dest, void *src, unsigned int size);
}ringlink_operations_t;
typedef struct ringlink
{
	ringlink_operations_t *operations;
	ringlink_mem_t	*head;
	ringlink_mem_t *read; /*Current position of read pointer.*/
	ringlink_mem_t *write; /*Current position of read pointer.*/
	ringlink_param_t param;
	ringlink_status_t status;
}ringlink_t;
int ringlink_create(ringlink_t *ringlink, ringlink_operations_t *operations, ringlink_param_t *param)
{
	int i;
	ringlink_mem_t *temp;
	RINGLINK_DBUG_LINE;
	if((NULL==operations->ringlink_malloc) || 
		(NULL==operations->ringlink_free) ||
		(NULL==operations->ringlink_memcpy) ||
		(NULL==operations->ringlink_memset))
	{
		RINGLINK_DBUG_LINE;
		return -1;
	}
	RINGLINK_DBUG_LINE;
	ringlink->operations = operations;
	operations->ringlink_memcpy((char*)(&ringlink->param), (char*)param, sizeof(ringlink_param_t)); 
//这句正常	
ringlink->operations->ringlink_memcpy((char*)(&ringlink->param), (char*)param, sizeof(ringlink_param_t));
       .........
}
static ringlink_operations_t userspace_operatioins = 
{
	.ringlink_malloc = malloc,
	.ringlink_free = free,
	.ringlink_memset = memset,
	.ringlink_memcpy = ringlik_memcpy,
};
ringlink_t tx;
int main()
{
	int ret;
	
	ringlink_param_t param;
	param.key_size = 4;
	param.value_size = 20;
	param.total_count = 5;
	param.overwrite_enable = 1;
	
	ret = ringlink_create(&tx, &userspace_operatioins, ¶m); 
//这个函数里出错
	printf("%s, %d ret=%d\n", __FUNCTION__, __LINE__, ret);
	ringlink_show(&tx);
	
	return 0;
}