0

タスク マネージャーを開いてメモリ使用量を確認すると、.3MB のメモリ使用量から始まります。ptr_vector に 100,000 個のオブジェクトを追加すると、2.3MB のメモリが使用されます。ベクターで .clear() を使用した後、メモリは .8-.9MB になります。このメモリ使用量の増加の原因は何ですか?

コードは次のとおりです。

#include <iostream>
#include <boost/ptr_container/ptr_vector.hpp>

class T {
public:
    static int nObjects;
    T() {
        nObjects++;
    }
    ~T(){
        nObjects--;
    }
};

int T:: nObjects = 0;

int main() {
    boost::ptr_vector<T> vec;
    char pause;
    std::cout << "Press any key to continue: ";
    std::cin >> pause;

    for(int i=0; i<100000; i++) {
        vec.push_back(new T);
    }

    std::cout << T::nObjects << " objects created." << std::endl;

    std::cout << "Press any key to continue: ";
    std::cin >> pause;

    vec.clear();
    std::cout << T::nObjects << std::endl;

    std::cout << "Press any key to exit: ";
    std::cin >> pause;
    return 0;
}

助けてくれてありがとう。

4

3 に答える 3

2

見た目から、boost::ptr_vector を使用しているはずです。

Windows Perfmon を使用して、アプリケーションのメモリ使用量を適切に特定することをお勧めします。Windows 7 で Perfmon を使用する方法については、このブログを参照してください。

于 2013-07-03T15:15:47.830 に答える