-4

割り当てることができる配列の大きさをプログラムで確認しようとしましたが、私のコードはそれを確認していないようです。速くする方法は?最後に、例外を取得したいと思います。

#include "stdafx.h"
#include "iostream"

using namespace std;
int ASCENDING = 1, DESCENDING = 2;

int tworzTablice(int rozmiar, char* t){
    try{
        t = new char[rozmiar];
        delete []t;
    }catch (std::bad_alloc& e){
        tworzTablice(rozmiar - 1,t);
        return -1;
    }
    return rozmiar;
}

int f(long p, long skok){
    char* t;
    try{
        while(true){
            t = new char[p];
            delete []t;
            p = p + skok;
        }
    }
  catch (std::bad_alloc& ba){
    p = tworzTablice(p-1, t);
    cout<<"blad";
  }
  return p;
}

int main(){
    cout<<f(0, 100000000)<<endl;;


    cout<<"koniec"<<endl;
    system("pause");
    return 0;
}
4

2 に答える 2

-1

使用可能なすべてのメモリを割り当てるのはおそらく悪い考えですが、本当にしたい場合:

vector<char*> ptrs;
int avail;
try {
    while (true)
        ptrs.push_back(new char[1000]);
}
catch (bad_alloc& b)
{
    avail = ptrs.size() * 1000;
    for (int i = 0; i < ptrs.size(); i++)
       delete[] ptrs[i];
}
于 2013-05-05T13:13:44.240 に答える