Tamaño de una matriz de enteros asignados dinámicamente

Estoy manejando una función de tipo:

int xyz(int input[]) 

No tengo acceso a la función principal y, por lo tanto, no tengo idea del tamaño de la matriz. ¿Cómo puedo encontrar el tamaño de la matriz de entrada? ¿Hay alguna manera de saber dónde termina la matriz? sizeof(input)/sizeof(int*) da 1 porque la entrada es básicamente un puntero.

Si la persona que llama no proporciona la información de tamaño sobre la matriz, entonces no hay forma de obtener el tamaño en la función xyz ().

Puede pasar la información de tamaño en otra variable (o como un elemento de la matriz).

 int xyx(int abc[], size_t len) { } 

No … no hay una forma (portátil) desde dentro de la función llamada, por lo que es normal en esta situación (es decir, cuando no se pasa ningún parámetro de número de elementos) para que las personas que llaman adopten alguna convención, como proporcionar un valor centinela en el último elemento utilizado o garantizar un número determinado de elementos. Si se utiliza un centinela, es posible que pueda probarse a sí mismo que esto se estaba haciendo comprobando el código de llamada en un depurador.

Si pasa una matriz a una función y no proporciona la longitud, no puede encontrarla, ya que la matriz decae como un puntero cuyo tamaño es siempre de 32 (64) bits.