‘std::bad_alloc’ se lanza cuando se intenta asignar un conjunto de más de 10^8 enteros.
Estoy usando el compilador g++ 9.2.0
con una memoria de 16 GB, en una computadora de 64 bits,
cuando estaba tratando de asignar un gran bloque de memoria en mi programa, me encontré con este error:
c++ terminado llamado después de arrojar una instancia de 'std::bad_alloc'
Un ejemplo mínimo se muestra a continuación:
“`c ++
<h1>include <bits/stdc++.h></h1>
using namespace std;
const int MAX<em>N = 1000000;
struct {
set<int> rels;
} arr[MAX</em>N];
int main() {
for(int i = 0; i < MAX_N; i++) {
for(int j = 0; j < 250; j++)
arr[i].rels.insert(j);
}
return 0;
}
“`
Sé que 250,000,000 enteros ocupan mucho espacio. Pero no se espera que sean mayores que 250000000*32/8/1024/1024
= 954 MB
, que es solo una decimosexta parte de la memoria física de mi computadora.
¿Hay alguna forma de hacer que mi programa pueda asignar un espacio más grande, como 2 GB o más?
davy.ai
Sí, existen algunas formas de hacer que tu programa pueda asignar un espacio mayor.