2012-11-21 34 views
3

我已經將其設置爲1啓用MALLOC_CHECK_(試圖與2和3也一樣),但我不認爲它報告任何問題與下面的C++程序:MALLOC_CHECK_不報告違規

int n = atoi(argv[1]); 
    std::cout<<"n = "<<n<<std::endl; 
    char *buf = new char[n]; 

    for (int i = 0;i < n*n; i++) 
    { 
    buf++; 
    *buf = 'x'; 
    } 



std::cout<<"done"<<std::endl; 

上午我在這裏丟失什麼?

+0

你沒有做'malloc'。 – Naveen

+0

'char * buf =(char *)malloc(n);' – Maroun

+1

operator new可以調用malloc。在我的環境中(libstdC++)它是[link](http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/libsupc%2B%2B/new_op.cc?revision=193295&view=markup ) – user947158

回答

1

最後嘗試調用'delete'。對我而言,gcc只有在最後調用'free'時纔開始標記錯誤。也許是一個實現細節。