Let's assume compiler doesn't omit out the given function, since it does nothing. And assume that compiler won't inline it either, since function is small. Your assertion that function doesn't do anything, doesn't call another function, no local variables, and not argument and return value - then why does it would require any memory?
First thing, the size occupied by function would be at two locations. One, at the generated binary (executable), and second, in the call stack of the thread which calls this function. An empty function would be sort of like a zero-byte file or a directory. Both seemingly doesn't occupy any storage in disk (since it is shown as '0 bytes'). But, they take some memory is the disk.
Analogy of empty file is not exactly same as an empty function, just for understanding purpose, I wrote. A function would be called by some function (caller), hence return-address of that function would be kept in call stack (of current thread). When function ceases to exist, that return address would be looked up, and ESP would point to that location for next instruction.
Calling conventions would also add up more instructions, for empty functions, to clean up the call stack. Pascal calling convention, for instance, would have some more instructions to clean up the call stack when function exits.
The bit-ness of the program (32-bit or 64-bit) would also change the size required for all this book keeping.