Fake Memory Leak - Vector

我們使用 vector 來 create list,然後最後 clear 清掉 vector's elements,可是最後發現 process 卻沒有 free memory。

#include <unistd.h>                                                                
#include <stdio.h>                                                                 
#include <stdlib.h>                                                                
#include <malloc.h>                                                                
#include <vector>                                                                  

using namespace std;                                                               

int main(int argc, char **argv) {                                                  
    vector<int> v;                                                                 

    malloc_stats();                                                                
    printf("===================================\n");                               
    int arg = strtol(argv[1], NULL, 10);                                           
    for (int i = 0; i < 1000000;i++) {                                             
        for (int j = 0; j < arg;j++) {                                             
            v.push_back(i);                                                        
        }                                                                          
    }                                                                              

    printf("%d, %d\n", v.size(), arg);                                             
    v.clear();                                                                     
    sleep (1);                                                                     
    malloc_stats();                                                                
    getchar();                                                                     
}
~# ./test_malloc 30
Arena 0:
system bytes     =     151552
in use bytes     =      20232
Total (incl. mmap):
system bytes     =     151552
in use bytes     =      20232
max mmap regions =          0
max mmap bytes   =          0
===================================
30000000, 30
Arena 0:
system bytes     =     155648    
in use bytes     =      24336
Total (incl. mmap):
system bytes     =  134377472
in use bytes     =  134246160
max mmap regions =          2
max mmap bytes   =  201334784

~# cat /proc/17520/status  | grep -i vm
VmPeak:   200592 kB
VmSize:   135052 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:    129672 kB
VmRSS:     99124 kB
VmData:   131264 kB
VmStk:       132 kB
VmExe:        12 kB
VmLib:      3324 kB
VmPTE:       130 kB
VmSwap:    19180 kB

* VmPeak: Peak virtual memory size.
* VmSize: Virtual memory size.
* VmLck: Locked memory size (see mlock(3)).
* VmHWM: Peak resident set size ("high water mark").
* VmRSS: Resident set size.
* VmData, VmStk, VmExe: Size of data, stack, and text segments.

results matching ""

    No results matching ""