Thank you very much. But I have test
Code:
float** X=(float**)malloc(sizeof(float)*3);
It can work well, Could you tell me why?

The other question:
When the foo have received the address, does it not matter the allocate memory in subprogram?