The &nKByte creates a temporary value, which cannot be bound to a reference to non-const.
You could change void test(float *&x) to void test(float * const &x) or you could just drop the pointer altogether and use void test(float &x); /*...*/ test(nKByte);.