2011-02-09 51 views

回答

2

如果您正在使用GNU glibc庫,那麼假設您想要捕獲程序中的所有分配,那麼可以使用malloc hooks來執行此操作,而不是重載新/刪除操作。如果你只想使用new/delete捕獲分配,那麼你可以重載這些操作符。順便說一下,如果您嘗試檢測和調試內存問題,那麼您可能會從使用valgrind with memcheck受益,而不是滾動自己的系統。

4

調試內存問題的一個好方法是使用外部顯示器,如valgrind。這將鉤住程序的內存分配和釋放,並在程序結束時顯示一個報告,顯示任何未分配的分配。此方法不需要修改或重新編譯程序。

0

如果你的應用程序非常簡單,你可以試試這個。其他人按照其他人的建議使用valgrind。

int sum = 0; 

class foo 
{ 
    int a,b,c; 
}; 

int main() 
{ 
    foo *obj1 = new foo; 

    sum += sizeof(*obj1); // 12 bytes 

    foo *obj2 = new foo; 

    sum += sizeof(*obj2); // 24 bytes 

    std::cout << " \n Total memory allocated with new:\t " << sum << std::endl ; 
    return 0; 
}