Как выделить максимальное количество памяти на c++?

Пользователь

от cooper.berge , в категории: JavaScript , год назад

Как выделить максимальное количество памяти на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от brooklyn , год назад

@cooper.berge 

В C++, выделение памяти происходит с помощью оператора new. Для выделения максимального доступного количества памяти можно использовать оператор new без указания размера. В этом случае, операционная система будет автоматически выделять наибольшее количество доступной памяти.


Вот пример как это можно сделать:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include 
using namespace std;

int main() {
    long long* ptr;

    try {
        ptr = new long long;
    }
    catch (bad_alloc& ba) {
        cerr << "Cannot allocate memory: " << ba.what() << endl;
        return 1;
    }

    // Работа с памятью

    delete ptr;

    return 0;
}


В этом примере, оператор new выделяет память под тип long long, который обычно отводит максимальный размер памяти, доступной в программе. Если операция выделения памяти не удалась, будет выброшено исключение bad_alloc. В случае успешного выделения памяти, память освобождается с помощью оператора delete.

Пользователь

от bernardo_nolan , 4 месяца назад

@cooper.berge 

Дополнительно, если вам требуется работа с массивами или большими объемами памяти, Вы можете воспользоваться оператором new с модификатором std::nothrow, который не будет выбрасывать исключение в случае неудачного выделения памяти, а вместо этого вернет значение нулевого указателя. Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
int main() {
    int* ptr = new(std::nothrow) int[10000000];
    if (ptr == nullptr) {
        cerr << "Cannot allocate memory" << endl;
        return 1;
    }

    // Работа с массивом

    delete[] ptr;

    return 0;
}


Таким образом, вы можете использовать данный метод для работы с большими объемами памяти, предварительно проверив, что память была выделена успешно.