0

メモリ使用量の制限が0.75mbである問題を解決しようとしています。サイズが0.75mb以内にないため、サイズ100000の配列を作成できません。

私のプログラムは次のとおりです。

#include <iostream>   
#include <String>
using namespace std;

void main() {
char temp;
int temp1, num, k, z, val__=0;
cin >> num;
int* value = new int[94000];
short* place = new short[94000];
for (int i = 0; i< num; i++) {
    cin >> temp>>temp;
    if (temp == 'U') {
        cin >> temp >> temp >> place[val__] >> value[val__++];
    }
    else {
        cin >> temp >> temp1;
        for (k = val__-1; k >=0; k-- ) {
            if (place[k]==temp1) {
                cout << value[k]<<endl;
                for (z = k; z < val__; z++) {
                    value[z]=value[z+1];
                    place[z]=place[z+1];
                }
                val__--;
                k = 0;
            }
        }
    }

}
}

C ++プログラムのメモリ使用量をグローバルに計算するにはどうすればよいですか?また、使用するメモリの量を減らすにはどうすればよいですか?
1つの配列に、0から1000までの数値を格納します。2番目に、0から10^9までの数値を格納します

4

2 に答える 2

1

sizeof(int) が 4 バイト、sizeof(short) が 2 バイトであると仮定すると、2 つの配列があり、600000 バイトとヒープ管理に少しだけ使用します。他のメモリはスタックまたは他のタイプのメモリを使用すると思います。おそらく、スタックを減らす必要がありますか?

于 2013-03-17T20:30:32.347 に答える
0

何を正確に解決しようとしているのかわかりません。ただし、割り当てることができるよりも多くのメモリが必要な場合(および割り当てられたメモリサイズを増やしたくない場合)、データをデータベースまたはファイルに保存して、配列の一部のみを読み取ることができます。メモリを実行しているプログラムにさらにアイテムをロードする前に、それらを処理してメモリから解放する必要があります。

于 2013-03-17T20:18:07.437 に答える