C++ 减少程序的内存使用

C++ 减少程序的内存使用,c++,memory,numbers,int,C++,Memory,Numbers,Int,我正在尝试解决一个内存使用限制为0.75 mb的问题 我无法生成大小为100000的数组,因为它不在0.75 mb之内 我的计划如下: #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]; shor

我正在尝试解决一个内存使用限制为0.75 mb的问题 我无法生成大小为100000的数组,因为它不在0.75 mb之内

我的计划如下:

#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;
            }
        }
    }

}
}
#包括
#包括
使用名称空间std;
void main(){
焦炭温度;
int temp1,num,k,z,val_;=0;
cin>>num;
整数*值=新整数[94000];
短*位=新短[94000];
for(int i=0;i>温度>>温度;
如果(温度='U'){
cin>>温度>>温度>>位置[val____;]>>值[val___;++];
}
否则{
cin>>温度>>温度1;
对于(k=val_u;-1;k>=0;k--){
if(place[k]==temp1){

我不确定你到底想解决什么问题。 但是,如果您需要的内存超过了您可以分配的内存, (假设您不想增加分配的内存大小) 而不是将数据保存到数据库或文件中, 仅读取处理和存储所需的阵列部分
在将更多项目加载到运行内存的程序之前,请先从内存中释放它们。

您有两个数组,假设sizeof(int)为4字节,sizeof(short)为2字节 然后只使用600000字节,再加上一点堆管理。 我认为,其他内存占用堆栈或其他类型的内存。
可能您必须减少堆栈?

val\uuu
是一个保留的标识符。您需要减少内存使用量,还是想办法增加堆栈大小?我需要一个程序,它可以做同样的事情,但使用更少的内存:)为了能够创建大小为100000的数组,请用文字和注释描述您的程序应该做什么更容易看到如何改进它。而且这个问题可能更适合于.main()应该返回int而不是voidyes。在这种情况下,此程序中最消耗堆栈的部分是什么,以及如何减小其大小设置堆栈大小平台和特定工具。我认为您不需要太大的堆栈,使用Debugger可以估计合理的堆栈大小。