I have read that task manager (windows 10) shows the amount of address space allocated, not the actual amount of memory being used. It's not clear for me how it refers to memory usage of C/C++ application. When I call malloc/new I treat that memory as allocated and being used, so how to explain that difference ?
When your application allocates memory, the OS may not actually allocate it at once (this is the case for Linux at least, unless you change the default allocation policy).
Instead, the OS will back the allocation when your application actually accesses the memory. That is, when it gets a page fault for an address you have allocated.
This is usually a sane strategy, since many programs allocate a lot of memory but then access only a small portion of it.