Я попытался проверить программно, как большой массив, который я могу выделить, но мой код, похоже, не проверяет его. Как сделать это быстрее? В итоге я хотел бы получить исключение.Создание самого большого массива символов, который можно выделить
#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;
}
Почему вы хотите это знать? –
Это зависит от размера вашей оперативной памяти, я считаю. И вы должны использовать delete [] t; вместо удаления t; Вот. – FreeNickname
Двойной размер буфера, пока не произойдет сбой выделения ('t == NULL'), а затем двоичный поиск максимального разрешенного размера. – harpun