I'd approach this problem as follows: 0. Check for logging strings. Probably you'll find there something related to allocations which will solve the problem.
Find all functions with 1 argument (size for malloc and pointer for free)
Track results of these functions. malloc result is usually checked against NULL after use and rarely used in math operations. In addition result of malloc function is used in store operations or memcpy.
Free function argument is not used after calling it.
Malloc and free should be located in close addresses.
Check for logging strings. Probably you'll find there something related to allocations which will solve the problem.
Find all functions with 1 argument (size for
malloc()and pointer forfree()).Track results of these functions.
malloc()result is usually checked againstNULLafter use and rarely used in math operations. In addition result ofmalloc()function is used in store operations ormemcpy().Free function argument is not used after calling it.
malloc()andfree()should be located in close addresses.
These heuristics should be enough to narrow down the number of possible candidates to observable.
Good luck.