I know that if a process does a malloc() but doesn't actually write on this memory, Linux consider that this memory is free and can be used by other processes (overcommit). Anyway, is there a way to know how much memory was malloc()ed by a given process? (even if not used)This info exists on a system wide basis in /proc/meminfo, but I'd like to know for a specific process.I dug in /proc/<PID>/{smaps,stat,statm} but I'm unsure that it displays this information.
See how much memory was reserved with malloc() by a process on Linux
linux;process;memory
Calls to malloc() which cause the data segment size to change (i.e., that dont re-use previously allocated memory  so allocations which result in calls to sbrk() or mmap()) show up in /proc/$PID/statm and /proc/$PID/stat.In statm, the first field shows the total program size, and the sixth field shows the number of pages of data; both of these reflect memory allocations (even when unused).In stat, the field to look at is vsize (the 23rd field currently).(See tables 1-3 and 1-4 in the proc documentation.)Note that these show total memory use and total data segment sizes, so you cant distinguish between memory thats been malloc()ed and other memory usage.You can see this in action with the following program:#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char **argv) {  void *buf;  puts(Waiting before allocating...);  sleep(20);  buf = malloc(10*1024*1024*1024L);  puts(Sleeping after allocating...);  sleep(20);  free(buf);  return 0;}(Excellent error handling as always.) Then$ ./356532&[1] 4239Waiting before allocating...$ cat /proc/4239/statm1043 172 154 1 0 81 0$ cat /proc/4239/stat | awk '{print $23}'4272128Sleeping after allocating...$ cat /proc/4239/statm2622484 172 154 1 0 2621522 0$ cat /proc/4239/stat | awk '{print $23}'10741694464Andrew Henle pointed out malloc_info(3), and you can actually use that on pretty much any process. Using the example program above, without any debugging info (just to show that its not necessary):$ gdb ./356532> break free(this sets up a breakpoint at the call to free in the program  actually any call to free, but well hit ours first; trying this with malloc wont be as useful because the startup code uses malloc)> runWhen gdb hits a breakpoint, you can call malloc_info like this:> call malloc_info(0, stdout)This will dump the malloc information.